反应导航在数组意外标记中导航?
const { navigate } = this.props.navigation;
navigate('Properties', {
list.map((item) => {
["module"+item.id]:this.state["module"+item.id]
})
});
返回错误:
意外的令牌,预期为“;”
答案 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));