React.createElement 即h函数,返回vnode- createElement 与 cloneElement 的区别是什么
createElement函数是JSX编译之后使用的创建React Element的函数- 而
cloneElement则是用于复制某个元素并传入新的Props
- 第一个参数,可能是组件,也可能是
html tag - 组件名,首字母必须是大写(
React规定)
React.createElement(
type,
[props],
[...children]
)
React.createElement('tag', null, [child1,child2])
React.createElement('tag', props, child1,child2,child3)
React.createElement(Comp, props, child1,child2,'文本节点')
<div className="container">
<p>tet</p>
<img src={imgSrc} />
</div>
React.createElement(
"div",
{
className: "container"
},
React.createElement("p", null, "tet"),
React.createElement("img", {
src: imgSrc
})
);
const styleData = {fontSize:'20px',color:'#f00'}
const styleElem = <p style={styleData}>设置style</p>
const styleData = {
fontSize: "20px",
color: "#f00"
};
const styleElem = React.createElement(
"p",
{
style: styleData
},
"\u8BBE\u7F6Estyle"
);
const app = <div>
<Input submitTitle={onSubmitTitle} />
<List list={list} />
</div>
const app = React.createElement(
"div",
null,
React.createElement(Input, {
submitTitle: onSubmitTitle
}),
React.createElement(List, {
list: list
})
);
const eventList = <p onClick={this.clickHandler}>text</p>
const eventList = React.createElement(
"p",
{
onClick: (void 0).clickHandler
},
"text"
);
const listElem = <ul>
{
this.state.list.map((item,index)=>{
return <li key={index}>index:{index},title:{item.title}</li>
})
}
</ul>
const listElem = React.createElement(
"ul",
null,
(void 0).state.list.map((item, index) => {
return React.createElement(
"li",
{
key: index
},
"index:",
index,
",title:",
item.title
);
})
);