jsx转js对象的babel转换器javascript
官方:css
理解:html
自定义属性前端
除了标签特有的属性外,咱们也能够自定义一些属性。但这些自定义属性在真正的页面渲染后,是否会显示在页面上由以下规则决定:java
元素是构成 React 应用的最小砖块。React 元素其实就是一个简单JavaScript对象,一个React 元素和界面上的一部分DOM对应,描述了这部分DOM的结构及渲染效果。react
React 内部会自动根据React 元素,渲染出最终的页面DOM。更确切地说,React元素描述的是React虚拟DOM的结构,React会根据虚拟DOM渲染出页面的真实DOM。web
React组件最核心的做用是返回React元素。React组件负责调用React.createElement(),返回React元素,供React内部将其渲染成最终的页面DOM。编程
渲染粗略过程:React元素描述的是 虚拟DOM的结构,React会根据虚拟DOM渲染出页面的真实DOM。 渲染详细过程:React 渲染过程浏览器
咱们要渲染一个 React 元素到一个 root DOM 节点,须要把它们传递给 ReactDOM.render() 方法安全
<div></div>
复制代码
React.createElement("div", null);
复制代码
<div>span</div>
复制代码
React.createElement("div", null, "span");
复制代码
<div id="id" key="key1" style={{display: 'none'}} ref="123">span</div>
复制代码
React.createElement("div", {
id: "id",
key: "key1",
style: {
display: 'none'
},
ref: "123"
}, "span");
复制代码
<div id="id" key="key1" style={{display: 'none'}} ref="123">
<span>1</span>
<span>2</span>
<span>3</span>
</div>
复制代码
React.createElement(
"div",
{
id: "id",
key: "key1",
style: {
display: 'none'
},
ref: "123"
},
React.createElement("span", null, "1"),
React.createElement("span", null, "2"),
React.createElement("span", null, "3")
);
复制代码
function Component () {
return <div>component</div>
}
<div id="id" key="key1" style={{display: 'none'}} ref="123">
<Component key="key2" name="rodchen" />
<span>2</span>
<span>3</span>
</div>
复制代码
function Component() {
return /*#__PURE__*/React.createElement("div", null, "component");
}
/*#__PURE__*/
React.createElement(
"div",
{
id: "id",
key: "key1",
style: {
display: 'none'
},
ref: "123"
},
React.createElement(Component, {
key: "key2",
name: "rodchen"
}),
React.createElement("span", null, "2"),
React.createElement("span", null, "3")
);
复制代码
function Component (props) {
return <div>{props.children}</div>
}
<div id="id" key="key1" style={{display: 'none'}} ref="123">
<Component key="key2" name="rodchen"><span>children</span></Component>
<span>2</span>
<span>3</span>
</div>
复制代码
function Component() {
return /*#__PURE__*/React.createElement("div", null, "component");
}
/*#__PURE__*/
React.createElement(
"div",
{
id: "id",
key: "key1",
style: {
display: 'none'
},
ref: "123"
},
React.createElement(
Component,
{
key: "key2",
name: "rodchen"
},
React.createElement("span", null, "children")
),
React.createElement("span", null, "2"),
React.createElement("span", null, "3")
);
复制代码
function Component () {
return <div></div>
}
<div>
<Component />
</div>
复制代码
function Component() {
return /*#__PURE__*/React.createElement("div", null);
}
/*#__PURE__*/
React.createElement("div", null, /*#__PURE__*/React.createElement(Component, null));
复制代码
function component () {
return <div></div>
}
<div>
<component />
</div>
复制代码
function component() {
return /*#__PURE__*/React.createElement("div", null);
}
/*#__PURE__*/
React.createElement("div", null, /*#__PURE__*/React.createElement("component", null));
复制代码
为何组件名称须要大写,由于小写的话,createElement会将组件当成html元素解析的。