据我所知,这个{...props}
和{prop1, prop2, prop3}
是一样的
在声明一个无状态功能组件时,使用析构很方便,这样您就不必不断地键入props.prop1, props.prop2
等等。然而,当您有10+道具时,您需要传递给您的子组件,事情会变得非常难看,所以我想我可以使用扩展操作符来分解我的道具对象!
基于{...props}
与{prop1, prop2, prop3}
本质相同的思想,我希望下面的代码能够工作,但我得到了一个prop1 is undefined
错误
const Component = ({...props}) => {
return (
<div>
{prop1}
</div>
)
}
我想做的事有可能吗?我在网上找不到任何例子,但如果有一种方法可以在不显式列出每个道具的情况下分解道具对象,那就太棒了!
编辑:请理解我知道如何正确地访问道具对象的属性。更仔细地阅读我的问题,我正在尝试扩展props对象中的所有属性,类似于显式地声明它们的示例:
const Component = ({prop1, prop2, prop3}) => {
return (
<div>
{prop1}
</div>
)
}
我希望它的行为与使用{...props}
初始化组件的行为相同
发布于 2017-10-26 19:34:16
这个
{...props}
和{prop1, prop2, prop3}
是一样的
只有当您的函数参数按键值解构对象的属性时,这才是正确的。
我的意思是:
const doAThing = ({ prop1, prop2, prop3 }) => { console.log(prop1) }
然后像doAThing({...props})
一样调用它(其中prop1
是props
对象上的一个属性)-在这个场景中,您是正确的。这就是它的工作方式。
您无法像试图访问prop1
那样访问deconstruction assigment
的原因是,您没有为deconstruction assigment
分配任何东西。它只是作为prop1, prop2, prop3
的键/值对的对象坐在那里,等等。
https://stackoverflow.com/questions/46962269
复制相似问题