【发布时间】:2023-04-04 19:41:01
【问题描述】:
简短的问题:
这两个版本有什么区别:
const A = ({ children, ...rest }) => React.cloneElement(children, rest);
对
const B = ({ children, ...rest }) => React.cloneElement(children, {...rest});
两个版本的工作方式似乎相同。
这个版本不行:
const C = ({ children, ...rest }) => React.cloneElement(children, { rest });
更详细的问题:
...休息与休息
在组件函数定义中声明的...rest充当休息参数语法表示传递给组件的其余道具。
例如:const B = ({ children, ...rest })
但是,...rest 作为参数传递:
例如:React.cloneElement(children, {...rest})
表示展开语法。在这里,我们似乎也只是简单地从组件函数定义中克隆了具有相同道具的子元素。
但是组件 A 是如何工作的呢?
const A = ({ children, ...rest }) => React.cloneElement(children, rest);
我们是如何从...rest 到rest 的?
最后,为什么用像组件C这样的括号括起来却不起作用
我已经阅读了关于 React 的文档和关于 ES6 的文档,但是没有很好的文档来使用它们 together 使用 React API。
【问题讨论】:
标签: javascript reactjs ecmascript-6 components