接着上一節JSX的講解後:咱們大概清楚瞭如下幾個事兒:javascript
知道JSX是個什麼東東php
爲何React要推薦使用JSXcss
以及JSX的一些基本語法。html
本篇文章談一下React是怎麼渲染元素的。java
元素是React應用中的最小部件,正是由一個或多個元素構建出來了組件。
一個元素用於描述你將在屏幕上看到的內容,好比:react
const element = <h1>Hello, world</h1>;
假設咱們的HTML文件中有這樣的一個<div>
:jquery
<div id="root"></div>
咱們稱這是一個根DOM節點,該節點內的全部內容都是有React DOM管理git
一個用React構建的應用程序一般只有一個根DOM節點。github
可是若是把這些應用程序整合到現有的app當中去,那麼該app中就可能會包含多個相互獨立的根DOM節點。babel
React元素是不可變的,一旦你建立了一個元素,就不能再修改其子元素或任何屬性。
更新UI的惟一方法是建立一個新的元素,並將其傳入到ReactDOM.render()
方法。
來思考下時鐘的例子,完整代碼以下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>rendering-elements</title> <script src="../build/react.js"></script> <script src="../build/react-dom.js"></script> <script src="../build/browser.min.js"></script> <script src="../build/jquery.min.js"></script> <script type="text/babel"> 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); </script> </head> <body> <div id="root"></div> </body> </html>
以上代碼,每隔1秒,就會經過setInterval()
回調ReactDOM.render()
方法來從新渲染元素。
實際上,大多數 React 應用只會調用 ReactDOM.render() 一次。在接下來的章節中,咱們將學習如何將這些代碼封裝到有狀態的組件中。
React DOM 會將元素及其子元素與以前版本逐一對比, 並只對有必要更新的 DOM 進行更新, 以達到 DOM 所需的狀態。
咱們對 上一個例子 進行檢查來驗證這一點:
從上圖中咱們能夠看出,即便咱們咱們每隔 1 秒都重建了整個元素, 但實際上 React DOM 只更新了修改過的文本節點。
本文作爲本身增強記憶之篇,均參考自:
http://www.css88.com/react/do...,在此列出,你們共同窗習。
歡迎你們訪問個人blog,有更精彩的文章吆!