React-Native学习之路(七)ListView
ListView
2018年7月22日
15:53
一、实现ListView基本显示中的两个必要属性:
1).dataSource:
dataSource是ListView的数据源,首先在state中去创建一个ListView.DataSource数据源,然后通过cloneWithRows方法为其传递一个数组,其中提供给数据源的rowHasChanged函数可以告诉ListView它是否需要重绘一行数据,即数据是否发生了改变,即在需要重绘界面的时候会进行判断,如果之前页面中的改行数据没有发生变化,则不再进行重绘,否则进行重绘。
到这一步算是成功初始化数据源
2).renderRow():
它会从数据源中接收一条数据,然后返回一个完成渲染的视图(View),因为它会直接返回一个渲染完成的视图,所以我们需要对每个Item进行的操作都在这里面进行,其中包括了Item的点击事件和Item的显示等相关操作
我这里设置了点击事件,可以弹一个Toast,这里弹个toast还需要导入一个easy-toast(垃圾语言)
然后在下面设置了text来显示我的数据
二、实现上拉刷新(RefreshControl):
需要用refreshControl,这里我们用RefreshControl,这当中有两个属性refreshing和onRefresh
1).refreshing:在这里可以引用isLoading来判断状态,这里我们在state里默认设置的是true
2).onRefresh:
onLoad就是自己写的一个方法,可以用来设置刷新时它转的时间,然后想要它不转,就用setstate把isLoading设置为false就好
然后这个onLoad函数放置的位置是比较灵活的,比如在这个例子中,我尽快看到效果,就把它放在了constructor里面,这样app一加载,我的这个刷新条就会开始转了,然而在之后的刷新中那个刷新条并没有按照我设置的3秒来显示,应该是我这个3秒设定只适用于开始
另外如有需要还可以设置分隔线和页脚:
同时对应的还可以渲染页眉用renderHeader()用法与footer类似
这些随便设置一下样式就行了
使用ListView可能遇到的问题:
使用这个东西很容易报错,目前我使用了两次,两次全都报错,还花了我不少时间
1.ListView外层一定要有一个View来包裹,如果那个View是父View的,记得设置为container(flex:1)
2.ListView的dataSource一定要设置对地方,比如我这个例子里面的,设置错了位置也报和上面同样的错误,所以,仅从它的报错来看,我们并不能很好的去分辨到底错在哪里,所以在用它时一定要多注意。
以上是 React-Native学习之路(七)ListView 的全部内容, 来源链接: utcz.com/z/384325.html