我在互联网上看到了很多有关此问题的信息,但没有提供明确的解决方案。
我有一些来自Firebase的数据是这样的:
getSuggestedList() {
var suggestedList = this;
firebase
.database()
.ref("/athleteList/")
.orderByChild("suggested/")
.equalTo(true)
.on("child_added", function(suggestedListData) {
var newData = [...suggestedList.state.suggestedListViewData];
newData.push(suggestedListData);
suggestedList.setState({ suggestedListViewData: newData });
});
}
然后使用此功能在下面进行渲染:
renderRow(suggestedListData) {
return (
<ListItem>
<CheckBox
checked={suggestedListData.selected}
onPress={() => {
suggestedListData.selected = !suggestedListData.selected;
}}
/>
<Body>
<Text>{suggestedListData._value.name}</Text>
</Body>
</ListItem>
);
}
在代码的主要render()部分:
<ListView
enableEmptySections
dataSource={this.ds.cloneWithRows(
this.state.suggestedListViewData
)}
renderRow={this.renderRow.bind(this)}
/>
我假设我将选中的位置设置为等于RecommendationsListData.selected,然后使用onPress更改了该值,但视图中不会发生这种情况。该值确实发生了变化,我可以在控制台中看到它,但是它不会更新该项目。
请有人帮忙。