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元素解析的。