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

作者: 如风而行 | 来源:发表于2018-06-29 11:53 被阅读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这个库

    相关文章

      网友评论

        本文标题:react-native中解决listView不能局部刷新问题

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