RN8_React-Native知识点3之-基本控件(2)

2024-06-09 16:38

本文主要是介绍RN8_React-Native知识点3之-基本控件(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

RN8_知识点之-基本控件(2)

Switch

必须使用onValueChange回调来更新value属性以响应用户的操作。


属性方法

1.      View相关属性样式全部继承(例如:宽和高,背景颜色,边距等相关属性样式)

2.      disabled bool 如果该值为true,用户就无法点击switch开关控件,默认为false

3.      onValueChange function 方法,当该组件的状态值发生变化的时候回调方法

4.      value bool 该开关的值,如果该值为true的时候,开关呈打开状态,默认为false

picker

本组件可以在iOS和Android上渲染原生的选择器(Picker)


属性方法:

1、View相关属性样式全部继承(例如:宽和高,背景颜色,边距等相关属性样式)

2、onValueChange function方法,当选择器item被选择的时候进行调用。该方法被调用的时候回传入一下两个参数

l  itemValue:该属性值为被选中的item的属性值

l  itemPosition:该选择器被选中的item的索引position

3、selectedValue: any任何参数值,选择器选中的item所对应的值,该可以是一个字符串或者一个数字

4、stylepickerStyleType 该传入style样式,设置picker的样式风格

5、enabled bool 如果该值为false,picker就无法被点击选中。例如:用户无法进行做出选择

6、mode enum('dialog','dropdown')  选择器模式。在Android平台上面,设置mode可以控制用户点击picker弹出的样式风格

l  'dialog': 该值为默认值,进行弹出一个模态dialog(弹出框)

l  'dropdown':以picker视图为基础,在该视图下面弹出下拉框

7、prompt string  设置picker的提示语(标题),在Android平台上面,模式设置成'dialog',显示弹出框的标题

ViewPagerAndroid

一个允许在子视图之间左右翻页的容器。每一个ViewPagerAndroid的子容器会被视作一个单独的页,并且会被拉伸填满ViewPagerAndroid


方法属性

1、View相关属性样式全部继承(例如:宽和高,背景颜色,边距等相关属性样式)

2、initialPage number  ViewPagerAndroid初始索引页,不过我们可以使用setPage方法来更新页码,通过onPageSelected方法来监听页面滑动。

3、keyboardDismissMode enum('none','on-drag')  枚举类型,进行设置在拖拽滑动的过程中是否要显示键盘。

l  'none'  默认值,在拖拽中不隐藏键盘

l  'on-drag'   当拖拽滑动开始的时候隐藏键盘

4、onPageScroll function 方法,该方法在页面进行滑动的时候执行(不管是因为页面滑动动画原因还是由于页面之间的拖拽以及滑动原因).该会回调传入的event.nativeEvent对象会有携带如下参数:

l  'position'   从左起开始第一个可见的页面的索引

l  'offset'  该value值的范围为[0,1),该用来代表当前页面的却换的状态。值x代表该索引页面(1-x)的范围可见,另外x范围代表下一个页面可见的区域

5、onPageScrollStateChanged function 该回调方法会在页面滚动状态发生变化的时候进行调用。页面的滚动状态有下面三种情况:

l  'idle' 该表示当前用户和页面滚动没有任何交互

l  'dragging'  拖动中,该表示当前页面正在被拖拽滑动中

l  'settling'   该表示存在页面拖拽或者滑动的交互。页面滚动正在结束。并且正在关闭或者打开动画。

6、onPageSelected function 方法该在页面进行拖拽滑动切换完成之后回调。该方法回调参数中的event.nativeEvent对象会携带如下一个属性 : 'position'  该属性代表当前选中的页面的索引.

ListView

一个核心组件,用于高效地显示一个可以垂直滚动的变化的数据列表。最基本的使用方式就是创建一个ListView.DataSource数据源,然后给它传递一个普通的数据数组,再使用数据源来实例化一个ListView组件,并且定义它的renderRow回调函数,这个函数会接受数组中的每个数据作为参数,返回一个可渲染的组件(作为listview的每一行)。

高级特性:

1、 给每段/组(section)数据添加一个带有粘性的头部(类似iPhone的通讯录,其首字母会在滑动过程中吸附在屏幕上方);

2、 在列表头部和尾部增加单独的内容;

3、 在到达列表尾部的时候调用回调函数(onEndReached)

4、 还有在视野内可见的数据变化时调用回调函数(onChangeVisibleRows)

5、 一些性能方面的优化:

滚动的更加平滑,尤其是在动态加载可能很大(或者概念上无限长的)数据集的时候:

l  只更新变化的行 - 提供给数据源的rowHasChanged函数可以告诉ListView它是否需要重绘一行数据(即:数据是否发生了变化)参见ListViewDataSource

l  限制频率的行渲染 - 默认情况下,每次消息循环只有一行会被渲染(可以用pageSize属性配置)。这把较大的工作分散成小的碎片,以降低因为渲染而导致丢帧的可能性。



属性方法

1、 ScrollView相关属性样式全部继承

2、 dataSource   ListViewDataSource  设置ListView的数据源

3、 initialListSize  number  进行设置ListView组件刚刚加载的时候渲染的列表行数,用这个属性确定首屏或者首页加载的数量,而不是花大量的时间渲染加载很多页面数据,提高性能

4、 onChangeVisibleRows  function  (visibleRows,changedRows)=>void。当可见的行发生变化的时候回调该方法。visibleRows参数对所有可见的行为{selectionID:{rowId:true}}的形式,changedRow参数对已经改变可见的行为{selectionID:{rowID:true|false}}。该值true代表可见,false代表在视图之外不可见的行。

5、 onEndReachedThreshold  number 当偏移量达到设置的临界值调用onEndReached

6、 onEndReached function 方法,当所有的数据项行被渲染之后,并且列表往下进行滚动。一直滚动到距离底部onEndReachedThredshold设置的值进行回调该方法。原生的滚动事件进行传递(通过参数的形式)。

7、 pageSize   number 每一次事件的循环渲染的行数

8、 removeClippedSubviews  bool  该属性用于提供大数据列表的滚动性能。该使用的时候需要给每一行(row)的布局添加over:'hidden'样式。该属性默认是开启状态。

9、 renderFooter function 方法  ()=>renderable ,在每次渲染过程中头和尾总会重新进行渲染。如果发现该重新绘制的性能开销比较大的时候,可以使用StaticContainer容器或者其他合适的组件。在每一次渲染过程中Footer(尾)该会一直在列表的底部,header(头)该会一直在列表的头部

10、         renderHeader  function 方法 使用情况和上面的renderFooter差不多

11、         renderRow function 方法  (rowData,sectionID,rowID,highlightRow)=>renderable   该方法有四个参数,其中分别为数据源中一条数据分组的ID行的ID,以及标记是否是高亮选中的状态信息。

12、         renderScrollComponent function 方法(props)=>renderable  该方法可以返回一个可以滚动的组件。默认该会返回一个ScrollView

13、         renderSectionHeader function(sectionData,sectionID)=>renderable   如果设置了该方法,这样会为每一个section渲染一个粘性的header视图。该视图粘性的效果是当刚刚被渲染开始的时候,该会处于对应的内容的顶部,然后开始滑动的时候,该会跑到屏幕的顶端。直到滑动到下一个section的header(头)视图,然后被替代为止。

14、         renderSeparator function (sectionID,rowID,adjacentRowHighlighted)=>renderable 如果设置该方法,会在被每一行的下面渲染一个组件作为分隔。除了每一个section分组的头部视图前面的最后一行。

15、         scrollRenderAheadDistancenumber  进行设置当该行进入屏幕多少像素以内之后就开始渲染该行

 

DatePickerIOS

在iOS平台上渲染一个日期/时间选择器。这是一个受约束的(Controlled)组件,所以你必须监听onDateChange回调函数并且及时更新date属性来使得组件更新,否则用户的修改会立刻被撤销来确保当前显示值和props.date一致。


1、Promise<Object>open(options:Object)   staitc,静态方法,使用该方法进行加载弹出一个标准的Android时间日期选择器。该options(可选)参数有以下三种对象:

①:'date'   日期Date对象或者时间戳以毫秒单位-日期已默认格式显示

②:'minDate'  日期Date对象或者时间戳以毫秒单位-可以选择的最小时间

③:'maxDate' 日期Date对象或者时间戳以毫秒单位-可以选择的最大时间

options = {date: this.state.maxDate,maxDate:new Date()}

2、dateSetAction(),static静态方法,选择时间日期选择器

3、dismissedAction(),static静态方法,关闭时间日期选择器

 

TouchableHighlight、TouchableNativeFeedback、TouchableOpacity、TouchableWithoutFeedback

TouchableHighlight

正确响应触摸操作。当按下的时候,封装的视图的不透明度会降低,同时会有一个底层的颜色透过而被用户看到,使得视图变暗或变亮。

TouchableNativeFeedback

正确响应触摸操作(仅限Android平台)。在Android设备上,这个组件利用原生状态来渲染触摸的反馈。

TouchableOpacity

可以正确响应触摸操作。当按下的时候,封装的视图的不透明度会降低。这个过程并不会真正改变视图层级,大部分情况下很容易添加到应用中而不会带来一些奇怪的副作用。

TouchableWithoutFeedback

除非你有一个很好的理由,否则不要用这个组件。所有能够响应触屏操作的元素在触屏后都应该有一个视觉上的反馈(然而本组件没有任何视觉反馈)。这也是为什么一个"web"应用总是显得不够"原生"的主要原因之一。

 

属性方法

1、 accessibilityComponentType  View.AccessibilityComponentType  设置可访问的组件类型

2、 accessibilityTraitsView.AccessibilityTraits,[View.AccessibilityTraits] 设置访问特征

3、 accessible  bool  设置当前组件是否可以访问

4、 delayLongPress  number  设置延迟的时间,单位为毫秒。从onPressIn方法开始,到onLongPress被调用这一段时间

5、 delayPressIn  number 设置延迟的时间,单位为毫秒,从用户触摸控件开始到onPressIn被调用这一段时间

6、 delayPressOut  number 设置延迟的时间,单位为毫秒,从用户触摸事件释放开始到onPressOut被调用这一段时间

7、 onLayout  function  当组件加载或者改组件的布局发生变化的时候调用。调用传入的参数为{nativeEvent:{layout:{x,y,width,height}}}

8、 onLongPress function 方法,当用户长时间按压组件(长按效果)的时候调用该方法

9、 onPress function 方法当用户点击的时候调用(触摸结束)。但是如果事件被取消了就不会调用。(例如:当前被滑动事件所替代)

10、         4onPressIn  function 用户开始触摸组件回调方法

11、         onPressOut function 用户完成触摸组件之后回调方法

12、         pressRetentionOffset{top:number,left:number,bottom:number,right:number}   该设置当视图滚动禁用的情况下,可以定义当手指距离组件的距离。当大于该距离该组件会失去响应。当少于该距离的时候,该组件会重新进行响应。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这篇关于RN8_React-Native知识点3之-基本控件(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1045727

相关文章

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联