我觉得这个语法很奇怪。
<>
{items.map((item, i) => {
return <ItemComponent key={i} {...{ [resourceName]: item }} />;
})}
</>
你能解释一下吗?我知道在Parent
组件中现在我得到了name
道具,但是IDK这是怎么发生的…
我没有完整的上下文,所以我的猜测是:
resourceName是一个变量,描述将在ItemComponent上设置哪个道具。
你不能写resourceName={item}
,因为这样ItemComponent就会有一个属性"resourceName"而不是存储在resourceName
中的任何值
item
对象相关联的resourceName
的值:
const itemComponentProps = {
[resourceName]: item;
};
如果你不熟悉这个语法,它是在对象上使用动态键。
的例子:
const dynamicKey = 'foo';
const obj = {
[dynamicKey]: 'bar'
}
console.log(obj[dynamicKey]); // bar
console.log(obj.foo); // bar
你将这个对象扩展到组件:
<ItemComponent key={i} {...itemComponentProps} />