1. 程式人生 > >react學習之路————react基礎知識

react學習之路————react基礎知識

react基礎知識

1.什麼是pwa?

pwa=漸進式web應用

pwa的好處:實現類似於app的離線快取功能

react中的registerServiceWorker+manifest.json就是用來實現這個功能的

2.react定位

2.1  宣告式開發:面向資料(區別於jquery和原生js:面向過程)

* 比如造房子:react提供圖紙即可自動進行 ,jquery:需要明確每一步做什麼

2.2  單項資料流 : 為什麼要單向資料流?-----父元件向子元件傳遞值之後,子元件不允許修改父元件中的值,因為一旦修改所有用 到這個值得元素全部改變,不利於定位bug位置

2.3  檢視層框架

:大型專案中資料傳遞比較複雜,只有react是遠遠不夠的

2.4  函數語言程式設計:面向測試的程式設計,如果都是函式的話很容易測試

3.虛擬dom是什麼?

以前我也百思不得其解虛擬dom到底是什麼?雖然知道有render函式,它是用一個數組來儲存標籤資訊的。

原來虛擬dom就是這個陣列。

虛擬dom的本質--------------js物件,如下:

* 虛擬DOM:['div',{id:'abc'},['span',{},'Hello World']]

* 真實DOM:`<div><span>Hello World</span></div>`

4.虛擬dom為什麼能夠提升效能?

前言:對真實DOM的操作極大耗費效能,而使用js物件來進行資料的比對,效能能得到優化

於是將資料的變化反應到虛擬dom上,更新之後再反應到真實dom上面

diff演算法:元件樹子上而下來進行比對,如果哪一個不同那麼後面的就無需比對直接替換掉了

5.react的宣告週期?

* initialization
* mounting
    * componentWillMount:元件即將被掛載到頁面時執行(只執行1次)
    * render:頁面掛載
    * componentDidMount:頁面掛載之後執行(只執行1次)---ajax請求
* updating
    * props
        * componentWillReceiveProps props改變比status改變前面多了一個,從父元件接收了引數,父元件render重新執行之後子元件則會執行
    * shouldComponentUpdate(元件更新前,返回布林值,是否需要更新)
    * componentWillUpdate
    * render
    * componentDidUpdate
* componentWillUnmount