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