为什么这样做:
return elements.map((e)=> {return Object.assign({}, e, {selected:true})});
但这并不是:
return elements.map((e)=> {...e, {selected: true}});
ES6 / Babel / React的新手,怜悯。
更新: 转移到此(如建议):
return elements.map(e => ({...e, selected: true }));
虽然传播在项目的其他地方工作:
return [
...state,
element(undefined, action)
]
答案 0 :(得分:13)
箭头函数中对象的隐式返回应该包含在parens中,以便解释器知道它不是块。
所以return elements.map(e => ({...e, selected: true }));
还修复了selected属性的语法,它不应该像azium指出的那样用括号括起来。
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
您的意外令牌错误可能是由于babel不支持建议的object spread。数组传播是es6。使用下面的答案中的插件将解决此问题。包含对象传播的首选方法是babel阶段0,因为您还可以获得其他很酷的功能,例如::
绑定运算符。对象传播是第2阶段,因此如果您不想包含第1阶段和第0阶段,也可以使用它。
答案 1 :(得分:0)
开箱即用的Babel不支持ES7规范中的Object rest spread变换。你需要使用一个插件。
安装此插件:
npm i babel-plugin-transform-object-rest-spread --save-dev
然后,将其添加到.babelrc
{
"plugins": ["transform-object-rest-spread"]
}
更多信息here