首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用rest属性破坏道具

用rest属性破坏道具
EN

Stack Overflow用户
提问于 2017-10-26 19:23:43
回答 1查看 4.8K关注 0票数 3

据我所知,这个{...props}{prop1, prop2, prop3}是一样的

在声明一个无状态功能组件时,使用析构很方便,这样您就不必不断地键入props.prop1, props.prop2等等。然而,当您有10+道具时,您需要传递给您的子组件,事情会变得非常难看,所以我想我可以使用扩展操作符来分解我的道具对象!

基于{...props}{prop1, prop2, prop3}本质相同的思想,我希望下面的代码能够工作,但我得到了一个prop1 is undefined错误

代码语言:javascript
运行
复制
const Component = ({...props}) => {
    return (
        <div>
            {prop1}
        </div>
    )
}

我想做的事有可能吗?我在网上找不到任何例子,但如果有一种方法可以在不显式列出每个道具的情况下分解道具对象,那就太棒了!

编辑:请理解我知道如何正确地访问道具对象的属性。更仔细地阅读我的问题,我正在尝试扩展props对象中的所有属性,类似于显式地声明它们的示例:

代码语言:javascript
运行
复制
const Component = ({prop1, prop2, prop3}) => {
    return (
        <div>
            {prop1}
        </div>
    )
}

我希望它的行为与使用{...props}初始化组件的行为相同

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-26 19:34:16

这个{...props}{prop1, prop2, prop3}是一样的

只有当您的函数参数按键值解构对象的属性时,这才是正确的。

我的意思是:

代码语言:javascript
运行
复制
const doAThing = ({ prop1, prop2, prop3 }) => { console.log(prop1) }

然后像doAThing({...props})一样调用它(其中prop1props对象上的一个属性)-在这个场景中,您是正确的。这就是它的工作方式。

您无法像试图访问prop1那样访问deconstruction assigment的原因是,您没有为deconstruction assigment分配任何东西。它只是作为prop1, prop2, prop3的键/值对的对象坐在那里,等等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46962269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档