📅  最后修改于: 2023-12-03 14:40:15.480000             🧑  作者: Mango
在 React 中,createElement 和 cloneElement 都是用来创建元素的方法,但它们有不同的用法和区别。
createElement 是 React 提供的原始方法,它的作用是创建一个新的 React 元素。createElement 方法接受三个参数:
举例来说,我们可以用 createElement 创建一个带有样式的 <h1>
标签:
React.createElement(
'h1',
{ style: { color: 'red' } },
'Hello, world!'
)
注意,createElement 方法的第二个参数是一个普通的对象,而不是 React 组件的 props 对象。这个对象包含了组件的属性和事件,比如上面的 example 中的 style。
与 createElement 不同,cloneElement 用于复制一个已有的 React 元素,并且可以修改它的属性和事件等信息。cloneElement 方法接受两个参数:
举例来说,我们可以使用 cloneElement 复制上面创建出的带有样式的 <h1>
标签,并修改它的样式:
const element = React.createElement(
'h1',
{ style: { color: 'red' } },
'Hello, world!'
)
const newElement = React.cloneElement(element, {
style: { color: 'green' }
})
注意,cloneElement 第二个参数的属性会覆盖原有元素的属性,但并不会合并。如果需要合并属性,可以使用 object spread operator 或者 object.assign:
const newElement = React.cloneElement(element, {
...element.props,
style: { color: 'green' }
})