Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 反应本机多选_React Native_Multi Select_Pass Data - Fatal编程技术网

React native 反应本机多选

React native 反应本机多选,react-native,multi-select,pass-data,React Native,Multi Select,Pass Data,我是新来的 我试图创建一个多选视图,用户可以在其中选择和取消选择项目,然后所选项目应传递回上一个容器,当用户返回到下一个视图时,应检查所选项目 我正在尝试实现,但问题是它没有准确地更新数据。当我再次回到屏幕时,它仅显示1个选定项目 有没有人能告诉我最好的方法,或者有没有教程 我应该使用Redux还是使用react native 任何帮助都将不胜感激 谢谢 我认为您所描述的问题是由于以下原因造成的: 在componentDidMount中,您正在循环中调用updateItemWithSelecte

我是新来的

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

我正在尝试实现,但问题是它没有准确地更新数据。当我再次回到屏幕时,它仅显示1个选定项目

有没有人能告诉我最好的方法,或者有没有教程

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

任何帮助都将不胜感激


谢谢

我认为您所描述的问题是由于以下原因造成的:

componentDidMount
中,您正在循环中调用
updateItemWithSelected
。此
updateItemWithSelected
调用将覆盖每个调用上所有
arrayHolder
值的
checked
属性,并且不使用
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 });
  }

和delete
updateItemWithSelected

您能否分享您当前的实现以及如何管理所选数据的状态?如果没有更多的细节,很难给出建议。当然让我来做吧。@azundo求你了check@azundo我正在使用this.popToNextView=()=>{const{navigation}=this.props;navigation.navigate('multiselect',{returnData:this.returnData.bind(this),data:this.state.brandsar});};