简要问题:
这两个版本有什么区别:
const A = ({ children, ...rest }) => React.cloneElement(children, rest);
vs
const B = ({ children, ...rest }) => React.cloneElement(children, {...rest});
两个版本似乎以相同的方式工作。
这个版本不起作用:
const C = ({ children, ...rest }) => React.cloneElement(children, { rest });
更详细的问题:
...rest vs rest
...rest
在组件函数定义中声明时,作为剩余参数语法表示传递给组件的其余props。
例如:const B = ({ children, ...rest })
然而,当作为参数传递的...rest
:
例如:React.cloneElement(children, {...rest})
它代表展开语法。在这里,似乎我们也只是从组件函数定义中克隆具有相同props的子元素。
但组件A是如何工作的?
const A = ({ children, ...rest }) => React.cloneElement(children, rest);
我们是如何从...rest
到rest
的呢?
最后,为什么用括号包围组件C时它就不起作用了?
我已经阅读了React和ES6的文档,但是没有很好的文档介绍如何使用React APIs 结合
ES6。