ReactNative ListView改变数据源,列表不刷新

ListView开始时的数据源:

dataArr = [ 'ROW0',
            'ROW1',
            'ROW2' ]

然后我改变数据源,刷新没反应。当然如何你删除或者增加一组数据是可以的。

dataArr[0] = "hello,改变了第一行的数据"
this.setState({
        dataSource: this.state.dataSource.cloneWithRows(dataArr)
    })

原因:这样赋值数组只是浅拷贝,虽然改变了数组,但是listView的数据源也改变了,所以rowHaschange接收到的前后数据确实是一样的。不会刷新、

解决办法

方法1:


    dataSource: this.state.dataSource.cloneWithRows(JSON.parse(JSON.stringify(dataArr)))    

方法2:js的slice函数,截取数组的一段。


    let newDataArr = dataArr.slice(0)
    newDataArr[0] = "hello,改变了第一行的数据"
    this.setState({
        dataSource: this.state.dataSource.cloneWithRows(newDataArr)
    })        

方法3:js的concat方法,拼接数组。


    var newDataArr = dataArr.concat()
    newDataArr[0] = "hello,改变了第一行的数据"
    this.setState({
        dataSource: this.state.dataSource.cloneWithRows(newDataArr)
    })    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值