React Native--ListView数据源修改,界面不刷新

    在项目中,经常要使用ListView实现列表功能,有的场景是需要动态刷新ListView的界面。作为小白的我,就想着通过改变数据源来修改界面,但是数据修改了,界面不刷新。

通过state保存
第一次赋值
listview关联数据源
修改数组中的某个数据

    事与愿违,界面没刷新。度娘的结果:const dataTemp = datas 的操作,实现的是浅拷贝,dataTemp的数据的改变,同步到了datas。因为这两个变量的在内存中的引用地址一致。因此rowHasChanged函数未触发,界面不刷新。

为了触发rowHasChanged函数,我们需要对datas进行深拷贝,在内存中新建一个对象,并引用。深拷贝的方式:const dataTemp =JSON.parse(JSON.stringify(datas))。然后给更新state:this.setState({DataSource :this.state.DataSource.cloneWithRows(dataTemp),})。

    到此,界面实现了刷新。讲这么多,其实关键点就是:浅拷贝、深拷贝的知识点。浅拷贝内存中的指向一致,深拷贝内存中的指向不一致。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容