对于ListView 需要对数据进行深度复制。
例如:
let dataBlod = []; // 缓存数组字段
当需要删除一个数据的时候,只需要
dataBlod.splice(this.state.checkIndex, 1)
但是这里删除数据以后,在重新赋值给listview的datasource时候,发现ListView没有刷新,
解决办法如下:
<ListView
key = {dataBlob}
initialListSize = {1}
onEndReached = {this._renderEndReached.bind(this)}
onEndReachedThreshold = {20}
dataSource = {this.state.dataSource}
renderRow = {this._renderItem.bind(this)}
renderFooter = {this._renderFooter.bind(this)}
style = {styles.listview}
showsVerticalScrollIndicator={false}
/>
只需要把深度复制的数组,加载ListView的key上即可 就能刷新ListView了。
郁闷这样做的话 ,会出现一个问题。
如果分页加载,会 滚动到listview的顶部 不知道如何解决了。。求教了
自己找到一个笨办法,其实还是 复制给datasoure必须是一个新的对象,不然listview真不知道数组是否改变
let datas = JSON.parse(JSON.stringify(cacheResults.dataBlob))
网友评论