美文网首页
React Native--ListView数据源修改,界面不刷

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

作者: boyrt | 来源:发表于2018-01-23 11:40 被阅读0次

        在项目中,经常要使用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),})。

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

    相关文章

      网友评论

          本文标题:React Native--ListView数据源修改,界面不刷

          本文链接:https://www.haomeiwen.com/subject/bbtsaxtx.html