react 也就這麼回事 04 —— 元素渲染
阿新 • • 發佈:2022-03-01
為了便於後續理解,我們再來回顧和總結前面幾個章節的內容
1 元素及其建立
元素是構成 React 應用的最小磚塊。
元素描述了你在螢幕上想看到的內容。
const element = <h1>Hello, world</h1>;
與瀏覽器的 DOM 元素不同,React 元素是建立開銷極小的普通物件。React DOM 會負責更新 DOM 來與 React 元素保持一致。
我們用 React.createElement
來建立 React 元素(語法上還可以使用其語法糖 JSX)
2 將一個元素渲染為DOM
想要將一個 React 元素渲染到指定的 DOM 節點中,只需把它們一起傳入 ReactDOM.render()
:
const element = <h1>Hello, world</h1>;
ReactDOM.render(element, document.getElementById('root'));
3 更新UI
React 元素是不可變物件。一旦被建立,你就無法更改它的子元素或者屬性。一個元素就像電影的單幀:它代表了某個特定時刻的 UI。
根據我們已有的知識,更新 UI 唯一的方式是建立一個全新的元素,並將其傳入 ReactDOM.render()
。
考慮一個計時器的例子:
function tick() { const element = ( <div> <h1>Hello, world!</h1> <h2>It is {new Date().toLocaleTimeString()}.</h2> </div> ); ReactDOM.render(element, document.getElementById('root')); } setInterval(tick, 1000);
這個例子會在 setInterval()
回撥函式,每秒都呼叫 ReactDOM.render()
。
4 React 只更新它需要更新的部分
React DOM 會將元素和它的子元素與它們之前的狀態進行比較,並只會進行必要的更新來使 DOM 達到預期的狀態。
例如前面計時器的例子,儘管每一秒我們都會新建一個描述整個 UI 樹的元素,React DOM 只會更新實際改變了的內容,也就是例子中的文字節點。
公眾號【前端嘛】