电竞比分网-中国电竞赛事及体育赛事平台

分享

react基礎(chǔ)知識點整理

 印度阿三17 2019-09-22

react的優(yōu)點:

1、React速度很快:它并不直接對DOM進(jìn)行操作,引入了一個叫做虛擬DOM的概念,安插在 javascript邏輯和實際的DOM之間,性能好。

2、跨瀏覽器兼容:虛擬DOM幫助我們解決了跨瀏覽器問題,它為我們提供了標(biāo)準(zhǔn)化的API,甚至在IE8中都是沒問題的。

3、一切都是component:代碼更加模塊化,重用代碼更容易,可維護(hù)性高。

4、單向數(shù)據(jù)流:Flux是一個用于在JavaScript應(yīng)用中創(chuàng)建單向數(shù)據(jù)層的架構(gòu),它隨著React視圖庫的開發(fā)而被Facebook概念化。

5、同構(gòu)、純粹的javascript:因為搜索引擎的爬蟲程序依賴的是服務(wù)端響應(yīng)而不是JavaScript的執(zhí)行,預(yù)渲染你的應(yīng)用有助于搜索引擎優(yōu)化。

6、兼容性好:比如使用RequireJS來加載和打包,而Browserify和Webpack適用于構(gòu)建大型應(yīng)用。它們使得那些艱難的任務(wù)不再讓人望而生畏。

小知識點

1、react兩種注釋:

這個是在react里面的。

{/* 要注釋的內(nèi)容 */}

在代碼行里面用

/* */

2、html中的class在react中用className,html中的for在react中用htmlFor,行內(nèi)樣式書寫規(guī)范style={{color:'red'}}

3、react中的表達(dá)式的用法:

  在className中直接可以判斷什么狀態(tài)用什么樣式:className={2 > 1 ? 'class-a' : 'class-b'}

  在模塊中直接根據(jù)條件來判斷具體用哪一個組件:{window.isLoggedIn ? <Nav /> : <Login />}

4 . React中的生命周期.

(1).Mount 掛載 (react Components被render解析生成對應(yīng)的dom節(jié)點被插入瀏覽器的dom結(jié)構(gòu)一個的過程

在瀏覽器看到組件元素從無到有的過程)

componentWillMount 在render()之前調(diào)用,因此在此方法中setState不會觸發(fā)重新渲染。

componentDIDMount()

此方法在組件被mounted之后立即被調(diào)用,初始化dom節(jié)點應(yīng)該在此方法中,如需要從遠(yuǎn)端健在數(shù)據(jù),這里是實例化網(wǎng)絡(luò)請求的好地方,此方法中setState會觸發(fā)組件重新渲染

(2).Update 更新(一個mounte的react Component被重新render的過程,但是在這個過程中,dom結(jié)構(gòu)并不一定會發(fā)生改變)

props和state的改變產(chǎn)生更新。在重新渲染組建時,如下的方法被調(diào)用

componentWillReceiveProps()React在組件mounting期間不會調(diào)用此方法,只有在一些組件的props可能被更新的時候才會調(diào)用

componentWillUpdate()

當(dāng)接收新的props或state,componentWillUpdate()在組件渲染之前被立即調(diào)用。使用此函數(shù)作為在更新發(fā)生之前執(zhí)行準(zhǔn)備的機(jī)會。初始渲染不會調(diào)用此方法。

componentDidUpdate()更新后立即被調(diào)用

(3).unmount 卸載(一個mount的react Component對應(yīng)的dom節(jié)點被從dom中移除的一個過程)

componentWillUnmount()

當(dāng)從dom中移除組件時,這個方法會被調(diào)用

5.prop和state

props是一個父組件傳遞給子組件的數(shù)據(jù)流,這個數(shù)據(jù)流可以一直傳遞到子孫組件。而state代表的是一個組件內(nèi)部自身的狀態(tài)

1.prop 用于定義外部接口,state用于記錄內(nèi)部狀態(tài);

2.prop的賦值在外部世界使用組件時,state的賦值在組件內(nèi)部;

3.組件不應(yīng)該改變 prop 的值,而 state 存在的目的就是讓組件來改變的;

6.在受控表單組件中的value值都要與state屬性進(jìn)行綁定,并且需要通過onChange方法去改變值

eg: input textarea select

7.React組件間的通信:

1、父組件給子組件傳值,采用props的方式進(jìn)行調(diào)用和賦值,在父組件中設(shè)置相關(guān)屬性值或者方法,子組件通過props的方式進(jìn)行屬性賦值或者方法調(diào)用;

2、子組件給父組件傳值,子組件在子組件的構(gòu)造方法中調(diào)用父組件的方法,此時子組件的構(gòu)造函數(shù)的參數(shù)應(yīng)為子組件需傳給父組件的值,之后在父組件的方法中可以拿到子組件傳的值

8.React 中 keys 的作用

Keys 是 React 用于追蹤哪些列表中元素被修改、被添加或者被移除的輔助標(biāo)識。

9.Controlled Component(受控組件) 與 Uncontrolled Component (非受控組件)之間的區(qū)別是什么?

受控組件(Controlled Component)代指那些交由 React 控制并且所有的表單數(shù)據(jù)統(tǒng)一存放的組件;非受控組件(Uncontrolled Component)則是由DOM存放表單數(shù)據(jù),并非存放在 React 組件中。

10.在生命周期中的哪一步發(fā)起 AJAX 請求

應(yīng)當(dāng)將AJAX 請求放到 componentDidMount 函數(shù)中執(zhí)行

11.React 中的事件處理邏輯

React 并沒有直接將事件附著到子元素上,而是以單一事件監(jiān)聽器的方式將所有的事件發(fā)送到頂層進(jìn)行處理。這樣 React 在更新 DOM 的時候就不需要考慮如何去處理附著在 DOM 上的事件監(jiān)聽器,最終達(dá)到優(yōu)化性能的目的。

12.傳入 setState 函數(shù)的第二個參數(shù)的作用

setState是異步的,該函數(shù)會在setState函數(shù)調(diào)用完成并且組件開始重渲染的時候被調(diào)用,我們可以用該函數(shù)來監(jiān)聽渲染是否完成。

13.路由庫React-Router

Router組件本身只是一個容器,真正的路由要通過Route組件定義.

Route組件還可以嵌套。

Link組件用于取代a元素,生成一個鏈接,允許用戶點擊后跳轉(zhuǎn)到另一個路由。它基本上就是a元素的React 版本,可以接收Router的狀態(tài)。

14.bind的作用.

答:

在react中如果不用箭頭函數(shù),就要用bind來綁定當(dāng)前組件

bind()最簡單的用法是創(chuàng)建一個函數(shù),使這個函數(shù)不論怎么調(diào)用都是bind()傳入的值;

15.this.props.children 表示組件的所有子節(jié)點

它的值有三種可能:

沒有子節(jié)點 : 數(shù)據(jù)類型 undefined

一個子節(jié)點 : 數(shù)據(jù)類型 object

多個子節(jié)點 : 數(shù)據(jù)類型 array

16.ref 可以獲取真實的Dom節(jié)點 由于ref獲取的是真實DOM,所以必須等到虛擬DOM插入文檔以后,才能使用
————————————————

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多