我一直在我的应用程序中使用列表视图。一旦我更改了属性,它就不会更新各个行的状态。我是这样做的:
rowData.showMenuDiv = !rowData.showMenuDiv;
this.setState({ dataSource : this.state.dataSource });
但只有第一行正确响应,其余行未正确更新。我也试过制作一个新的数组并将它分配为:
rowData.showMenuDiv = !rowData.showMenuDiv;
var newArray = oldDataArray.splice()
this.setState({ dataSource : dataSource.cloneWithRows(newArray) });
但这根本不起作用。
唯一有效的解决方案是创建新数据源并为其分配更新的数组 像:
rowData.showMenuDiv = !rowData.showMenuDiv;
var dataSource = new ListView.DataSource
( {rowHasChanged: (r1, r2) => ( r1.showMenuDiv != r2.showMenuDiv )});
this.setState({ dataSource : dataSource.cloneWithRows(oldDataArray) });
请解释我在前两种方法中是否做错了。或者我用来更新行的方法是正确的(最后一种方法)?