反应导航阵列道具

时间:2019-05-22 14:17:54

标签: react-native react-navigation

反应导航在数组意外标记中导航?

const { navigate } = this.props.navigation;
navigate('Properties', { 
    list.map((item) => {
       ["module"+item.id]:this.state["module"+item.id]
    }) 
});

返回错误:

  

意外的令牌,预期为“;”

2 个答案:

答案 0 :(得分:1)

导航参数必须为对象格式,因此您必须添加

navigate('Properties', { someKey: list.map((item) => { ... }) });

答案 1 :(得分:1)

首先,当您提供返回对象的单个表达式箭头函数时,必须用括号将对象包装起来,否则解释器会认为花括号是一个块,而不是对象的根。

list.map((item) => ({
   ["module"+item.id]: this.state["module"+item.id]
}))

第二,您似乎正在尝试从值列表中创建params对象。
但是您编写的map的结果是对象列表,而不是对象。

创建该对象的方法之一是使用reduce函数:

list.reduce((accumulator, current) => (Object.assign(accumulator, {["module"+current.id]: this.state["module"+current.id]})), {});

但是,也许更高效,更简单的方法是仅仅具有局部副作用:

function prepareParams(list) {
  let result = {};
  list.forEach(item => result["module"+item.id] = this.state["module"+item.id]);
  return result;
}

然后在您的导航中:

navigate('Properties', prepareParams(list));