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)
})