【发布时间】:2020-08-10 21:00:57
【问题描述】:
当我执行以下操作时,一切正常:
this.state.sections.map(({ a, b }) => <MenuItem { ...{a,b} }/>)
但是,当我执行以下操作(我认为这是等效的)时,我收到一条错误消息,提示 ... 应该是:
this.state.sections.map(({ a, b }) => <MenuItem { a, b }/>)
为什么会这样? ...{a,b}在JS中不就相当于a, b吗?
【问题讨论】:
-
"
...{a,b}不等于 JS 中的a, b吗?" 不,不是。一个创建一个新对象,另一个使用comma operator,它会忽略a,只给你b。然而,对于 JavaScript 来说,这里的 React 语法可能是另一回事——我并不精通它。 -
@VLAZ 所以
...{a,b}的等价物是{a,b},对吧? -
{ a, b } 中的括号用来表示一个javascript表达式作为JSX中的prop(将
a, b作为prop执行,因为prop没有名字所以无效) , 而 ...{a,b} 是在道具上模拟扩展运算符,其中键名用作道具名称。
标签: javascript reactjs babeljs jsx