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

刚在用一个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这个库

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

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,425评论 25 708
  • 一、上节回顾: (一)、三大表单控件中需要记忆的核心方法: 1、RadioButton: RadioGroup类中...
    白话徐文涛阅读 2,301评论 1 7
  • 今晚夜空特别明亮 是广阔无边的草原吗 深蓝的天幕 似草原上清澈的湖水 一片片洁白的小云 像草原人的蒙古包 像连绵起...
    火星鹏阅读 571评论 1 1
  • 突然听到这个消息,门卫老张走了。啊为什么?应该是退休了吧。怪不得几天没见到,怎么那么不舍得啊!同事也连声附和是啊。...
    浅浅一笑_00aa阅读 245评论 0 0
  • 时隔快半年,我去剪头,预约的还是那个理发师。 那是一个很漂亮的小姐姐,不是标准日本人的长相,棕色长卷发,每次见她,...
    兔子尾巴鼠阅读 523评论 0 0

友情链接更多精彩内容