我现在有几个建议的解决方案,但无法让它们发挥作用。我在通过正确复制旧数组来更新 ListView 时遇到问题。 到目前为止我的解决方案(不起作用:-()不重新渲染 ListView 。
const data = [{
id: 1,
selected: true,
}, {
id: 2,
selected: false,
}, {
id: 3,
selected: false,
}]
const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.state = {
dataSource: ds.cloneWithRows(data),
data: data,
}
要更新行,我使用以下代码:
_updateRow = (rowData, rowID) => {
let newArray = this.state.data.slice();
newArray.map((o, index) => {
if (o.id = rowData.id){
o.selected = true;
}
else {
o.selected = false;
}
})
this.setState({
dataSource: this.state.dataSource.cloneWithRows(newArray),
data: newArray
})
}
我想将属性(选定的)从索引更改为 true,并将所有其他对象(选定的)更改为 false。 希望有人能帮忙。寻找最干净的解决方案。
问候
最佳答案
是啊!!! 解决了。 代码如下:
_updateRow = (rowData, rowID) => {
let newArray = this.state.data.slice();
newArray.map((o, index) => {
newArray[index] = {...o, selected: true};
else
newArray[index] = {...o, selected: false};
})
this.setState({
dataSource: this.state.dataSource.cloneWithRows(newArray),
data: newArray
})
}
有人有更好的解决方案吗?
关于javascript - 在 React Native 中更新 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40694106/