为了账号安全,请及时绑定邮箱和手机立即绑定

React-Native Listview 的各个属性解释?

React-Native Listview 的各个属性解释?

月关宝盒 2019-04-21 20:14:52
今天终于成功使用ReactNative打包APK成功,IOS暂时没有开发者账号所以先弄Android.组件第一个遇到的就是ListView,实在有些看不太明白加之人懒,所以前来请教经验在很多ListView的例子中都有这样一个属性rowHasChanged按理说他应该是布尔值(在后面可以看到它却显示为s1)以下是我做的测试代码如下classYesextendsComponent{constructor(){super();vards=newListView.DataSource({rowHasChanged:(r1,r2)=>r1!==r2});this.state={dataSource:ds.cloneWithRows(['row1','row2']),}}componentDidMount(){varthat=this;setTimeout(()=>{that.setState({dataSource:this.state.dataSource.cloneWithRows(['row1','row2','row3'])});},1000);}render(){return({rowData+':'+rowHasChanged}}/>);}}我不知道他有什么作用,我尝试将!===改为===,对例子完全没有影响.然后我尝试将他显示出来{rowData+':'+rowHasChanged}}/>结果为row1:s1row2:s11秒后变为由于`setTimeout(...)`,row1:s1row2:s1row3:s1将rowHasChanged:(r1,r2)=>r1!==r2中的!==改为===没有任何影响,那么这个rowHasChanged是做什么的呢,它是ListView它是一个用来控制组件的属性吗?另外想请教如何学习react-native的相关组件,总觉得官方文档看起来生涩.顺便再问一下:setTimeout()我为了访问当前this在外面使用了that存储,在ES2015中有没有什么方法避免使用that_this这样的变量一共三个问题:rowHasChanged是什么学习reactnativecomponent的技巧(例如是否有必要从Android了解?)ES6中避免使用that_thisbind的方法有好干货在手的请用力砸我附录:ReactNative官方文档链接
查看完整描述

2 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

rowHasChanged是react组件纪录state是否更新的一个方法,你修改等于和不等于并不影响你第一次显示,影响的是你state变化以后的显示情况。如果是等于,state变化页面不更新,state不变,才更新(一般不用)。不等于就是state变化页面立即更新。至于你输出s1,是react将数据封装成了新对象,key叫s12.了解当然最好,不了解也是不影响开发的,除非你要做自定义组件
                            
查看完整回答
反对 回复 2019-04-21
?
动漫人物

TA贡献1815条经验 获得超10个赞

@熊猫说的很清楚了。RN的文档不太细致,毕竟项目太活跃了,文档有点脱节,android部分更是。建议题主找几个开源项目直接上手,改一改,看到什么组件再查文档。结合问答社区,github的issues等学习。
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 376 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信