我是React Native的新手
我正在尝试创建一个多选视图,用户可以在其中选择和取消选择项目,然后将选定的项目传递回上一个容器,当用户返回到下一个视图时,应检查选定的项目。
我正在尝试实施,但遇到的问题是它无法正确更新数据。当我再次回到屏幕时,它仅显示1个选定的项目。
任何人都可以告诉我最好的方法或是否有任何教程。
我应该使用Redux还是使用react native?
任何帮助将不胜感激!
谢谢!
答案 0 :(得分:1)
我相信您所描述的问题是由于以下原因造成的:
在componentDidMount
中,您正在循环调用updateItemWithSelected
。此updateItemWithSelected
调用既覆盖了每次调用中所有checked
值的arrayHolder
属性,也没有使用updater
的{{1}}函数版本,因此由于setState
是异步的和成批的,因此循环的后续调用可能会覆盖先前的调用。如果您不在其他地方使用setState
,则应将updateItemWithSelected
简化为:
componentDidMount
并删除 componentDidMount() {
const selectedTitles = {};
const { state } = this.props.navigation
const params = state.params || {};
if (params.data.length){
params.data.forEach((element) => {
// create a map of selected titles
selectedTitles[element.title] = true;
})
}
const arrayHolder = this.array.map(item => {
// map over `this.array` and set `checked` if title is in `selectedTitles`
return {...item, checked: !!selectedTitles[item.title]};
});
this.setState({ arrayHolder });
}
。