反应本机多选

时间:2019-08-22 17:12:59

标签: react-native multi-select pass-data

我是React Native的新手

我正在尝试创建一个多选视图,用户可以在其中选择和取消选择项目,然后将选定的项目传递回上一个容器,当用户返回到下一个视图时,应检查选定的项目。

我正在尝试实施,但遇到的问题是它无法正确更新数据。当我再次回到屏幕时,它仅显示1个选定的项目。

任何人都可以告诉我最好的方法或是否有任何教程。

我应该使用Redux还是使用react native?

任何帮助将不胜感激!

谢谢!

1 个答案:

答案 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 }); }