React系列--jsx語法及虛擬dom,渲染

1. 虛擬dom:其實感受就跟dom是同樣的,只不過是寫在js的結構中,而不是寫在html結構中。 此時須要babel去解析,遇到<認爲是html,遇到{}認爲是js變量。html

<script type="text/babel">          //使用babel瀏覽器

  //建立虛擬DOM,有兩種,一種不經常使用babel

    let element1=React.createElement("h1",{id:"haha",className:"haha"},"這是利用createElement建立的dom");  //不經常使用dom

    let e2=<h2>這是直接建立的dom</h2>   //寫法簡單,經常使用,至關於在js中寫htmlspa

  //渲染虛擬domcode

    ReactDOM.render(e2,document.getElementById('example'));xml

</script>htm

2.https://www.jianshu.com/p/616999666920對象

虛擬dom是幹什麼用的?當要改變屢次dom結構時,瀏覽器會改變一次渲染一次全流程,耗能。而虛擬dom則能夠把更新的diff內容存在一個js對象中,最終將這個js對象一次性attach到dom樹上,而後再去通知瀏覽器繪製,避免了無謂的計算。blog

 

3.https://www.cnblogs.com/zourong/p/6043914.html

JSX就是Javascript和XML結合的一種格式。React發明了JSX,利用HTML語法來建立虛擬DOM。當遇到<,JSX就當HTML解析,遇到{就當JavaScript解析。

以下(JS寫法)

var child1 = React.createElement('li', null, 'First Text Content');
var child2 = React.createElement('li', null, 'Second Text Content');
var root = React.createElement('ul', { className: 'my-list' }, child1, child2);

等價於(JSX寫法)

複製代碼
var root =(                                                       //js寫法
  <ul className="my-list">                        //xml的樣子
    <li>First Text Content</li>
    <li>Second Text Content</li>
  </ul>
);
複製代碼

待續----

相關文章
相關標籤/搜索