React Native开发React Native开发经验集React-Native 开发阵营

react-native中解决listView不能局部刷新问题

2018-06-29  本文已影响22人  如风而行

刚在用一个listView写的九宫格,效果要求是点击每个item发生改变,我发现数据源变了但是状态没变,
最开始我是使用一个临时数组保存数据源,在点击每个item的时候改变数据源的熟悉,这样就做到了数据源发生变化了
这是点击每个item的方法 改变数据源

event(rowData, rowId) {
       array = this.state.tempDataSource; //这是浅拷贝
        array[rowId].isSelect=!array[rowId].isSelect;
        this.setState({
            dataSource: this.state.dataSource.cloneWithRows(array),
            tempDataSource: array
        });

    }

但是这样做不可以,后来找原因发现是数据源浅拷贝的原因,每次走rowHasChanged这个方法的时候发现数据一样,所以没有改变,把数据源深拷贝就可以了,不过这样做是对内存是有问题的,数据量小的话还不影响。
我使用了这就代码 深拷贝

array = JSON.parse(JSON.stringify(this.state.tempDataSource));

其实更好的做法还是使用mobx这个库

上一篇下一篇

猜你喜欢

热点阅读