ReactNative FlatList state更新,视图不更新的问题

来源:互联网 发布:路由器匿名主机mac 编辑:程序博客网 时间:2024/06/08 10:52

官方文档给出

  • 本组件继承自PureComponent而非通常的Component,这意味着如果其props浅比较中是相等的,则不会重新渲染。所以请先检查你的renderItem函数所依赖的props数据(包括data属性以及可能用到的父组件的state),如果是一个引用类型(Object或者数组都是引用类型),则需要先修改其引用地址(比如先复制到一个新的Object或者数组中),然后再修改其值,否则界面很可能不会刷新。(译注:这一段不了解的朋友建议先学习下js中的基本类型和引用类型。)

React.PureComponent实现了propsstate进行浅比较的shouldComponentUpdate()方法。 如果你确定想人肉处理这个浅比较操作,你可以自己在这个函数中比较this.propsnextPropsthis.statenextState是否相同。相同返回false,不同返回true,那么React就会根据返回值来确认是否跳过本次DOM渲染。


所以,当state内存放的数据为数组时候,实质上是一个引用,就算是state内push了一个数据,这时候是不会触发更新的,

我这里这么解决的

 let d = {                nr:action.mes,                type:"txt",                who:1            };                        list = [];            list = list.concat(this.state.Data);            list.push(d);     this.state.Data = list;
这样就可以触发更新啦!

还是要详细读一下文档哦~~~

原创粉丝点击