久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      一些關(guān)于React的常見面試題(分享)

      一些關(guān)于React的常見面試題(分享)

      1、redux中間件

      答:中間件提供第三方插件的模式,自定義攔截 action -> reducer 的過程。變?yōu)?action -> middlewares -> reducer 。這種機(jī)制可以讓我們改變數(shù)據(jù)流,實(shí)現(xiàn)如異步 action ,action 過濾,日志輸出,異常報(bào)告等功能。

      常見的中間件: redux-logger:提供日志輸出;redux-thunk:處理異步操作;redux-promise:處理異步操作;actionCreator的返回值是promise

      2、redux有什么缺點(diǎn)

      答:1.一個(gè)組件所需要的數(shù)據(jù),必須由父組件傳過來,而不能像flux中直接從store取。

      2.當(dāng)一個(gè)組件相關(guān)數(shù)據(jù)更新時(shí),即使父組件不需要用到這個(gè)組件,父組件還是會(huì)重新render,可能會(huì)有效率影響,或者需要寫復(fù)雜的shouldComponentUpdate進(jìn)行判斷。

      3、react組件的劃分業(yè)務(wù)組件技術(shù)組件?

      答:根據(jù)組件的職責(zé)通常把組件分為UI組件和容器組件。UI 組件負(fù)責(zé) UI 的呈現(xiàn),容器組件負(fù)責(zé)管理數(shù)據(jù)和邏輯。兩者通過React-Redux 提供connect方法聯(lián)系起來。

      4、react生命周期函數(shù)

      答:一、初始化階段:

      getDefaultProps:獲取實(shí)例的默認(rèn)屬性

      getInitialState:獲取每個(gè)實(shí)例的初始化狀態(tài)

      componentWillMount:組件即將被裝載、渲染到頁面上

      render:組件在這里生成虛擬的DOM節(jié)點(diǎn)

      componentDidMount:組件真正在被裝載之后

      二、運(yùn)行中狀態(tài):

      componentWillReceiveProps:組件將要接收到屬性的時(shí)候調(diào)用

      shouldComponentUpdate:組件接受到新屬性或者新狀態(tài)的時(shí)候(可以返回false,接收數(shù)據(jù)后不更新,阻止render調(diào)用,后面的函數(shù)不會(huì)被繼續(xù)執(zhí)行了)

      componentWillUpdate:組件即將更新不能修改屬性和狀態(tài)

      render:組件重新描繪

      componentDidUpdate:組件已經(jīng)更新

      三、銷毀階段:

      componentWillUnmount:組件即將銷毀

      5、react性能優(yōu)化是哪個(gè)周期函數(shù)?

      答:shouldComponentUpdate 這個(gè)方法用來判斷是否需要調(diào)用render方法重新描繪dom。因?yàn)閐om的描繪非常消耗性能,如果我們能在shouldComponentUpdate方法中能夠?qū)懗龈鼉?yōu)化的dom diff算法,可以極大的提高性能。

      6、為什么虛擬dom會(huì)提高性能?

      答:虛擬dom相當(dāng)于在js和真實(shí)dom中間加了一個(gè)緩存,利用dom diff算法避免了沒有必要的dom操作,從而提高性能。

      具體實(shí)現(xiàn)步驟如下:

      1.用 JavaScript 對(duì)象結(jié)構(gòu)表示 DOM 樹的結(jié)構(gòu);然后用這個(gè)樹構(gòu)建一個(gè)真正的 DOM 樹,插到文檔當(dāng)中;

      2.當(dāng)狀態(tài)變更的時(shí)候,重新構(gòu)造一棵新的對(duì)象樹。然后用新的樹和舊的樹進(jìn)行比較,記錄兩棵樹差異;

      把2所記錄的差異應(yīng)用到步驟1所構(gòu)建的真正的DOM樹上,視圖就更新了。

      7、diff算法?

      答:1.把樹形結(jié)構(gòu)按照層級(jí)分解,只比較同級(jí)元素。

      2.給列表結(jié)構(gòu)的每個(gè)單元添加唯一的key屬性,方便比較。

      3.React 只會(huì)匹配相同 class 的 component(這里面的class指的是組件的名字)

      4.合并操作,調(diào)用 component 的 setState 方法的時(shí)候, React 將其標(biāo)記為 dirty.到每一個(gè)事件循環(huán)結(jié)束, React 檢查所有標(biāo)記 dirty 的 component 重新繪制.

      6.選擇性子樹渲染。開發(fā)人員可以重寫shouldComponentUpdate提高diff的性能。

      8、react性能優(yōu)化方案

      答:1)重寫shouldComponentUpdate來避免不必要的dom操作。

      2)使用 production 版本的react.js。

      3)使用key來幫助React識(shí)別列表中所有子組件的最小變化

      9、簡述flux 思想

      答:Flux 的最大特點(diǎn),就是數(shù)據(jù)的"單向流動(dòng)"。

      1.用戶訪問 View

      2.View 發(fā)出用戶的 Action

      3.Dispatcher 收到 Action,要求 Store 進(jìn)行相應(yīng)的更新

      4.Store 更新后,發(fā)出一個(gè)"change"事件

      5.View 收到"change"事件后,更新頁面

      10、React項(xiàng)目用過什么腳手架?Mern? Yeoman?

      答:Mern:MERN是腳手架的工具,它可以很容易地使用Mongo, Express, React and NodeJS生成同構(gòu)JS應(yīng)用。它最大限度地減少安裝時(shí)間,并得到您使用的成熟技術(shù)來加速開發(fā)。

      11、你了解React嗎?

      答:了解,React是facebook搞出來的一個(gè)輕量級(jí)的組件庫,用于解決前端視圖層的一些問題,就是MVC中V層的問題,它內(nèi)部的Instagram網(wǎng)站就是用React搭建的。

      12、React解決了什么問題?

      答:解決了三個(gè)問題: 1.組件復(fù)用問題, 2.性能問題,3.兼容性問題:

      13、React的協(xié)議?

      答:React遵循的協(xié)議是“BSD許可證 + 專利開源協(xié)議”,這個(gè)協(xié)議比較奇葩,如果你的產(chǎn)品跟facebook沒有競爭關(guān)系,你可以自由的使用react,但是如果有競爭關(guān)系,你的react的使用許可將會(huì)被取消

      14、了解shouldComponentUpdate嗎?

      答:React虛擬dom技術(shù)要求不斷的將dom和虛擬dom進(jìn)行diff比較,如果dom樹比價(jià)大,這種比較操作會(huì)比較耗時(shí),因此React提供了shouldComponentUpdate這種補(bǔ)丁函數(shù),如果對(duì)于一些變化,如果我們不希望某個(gè)組件刷新,或者刷新后跟原來其實(shí)一樣,就可以使用這個(gè)函數(shù)直接告訴React,省去diff操作,進(jìn)一步的提高了效率。

      15、React 的工作原理?

      答:React 會(huì)創(chuàng)建一個(gè)虛擬 DOM(virtual DOM)。當(dāng)一個(gè)組件中的狀態(tài)改變時(shí),React 首先會(huì)通過 "diffing" 算法來標(biāo)記虛擬 DOM 中的改變,第二步是調(diào)節(jié)(reconciliation),會(huì)用 diff 的結(jié)果來更新 DOM。

      16、使用 React 有何優(yōu)點(diǎn)?

      答:1.只需查看 render 函數(shù)就會(huì)很容易知道一個(gè)組件是如何被渲染的

      2.JSX 的引入,使得組件的代碼更加可讀,也更容易看懂組件的布局,或者組件之間是如何互相引用的

      3.支持服務(wù)端渲染,這可以改進(jìn) SEO 和性能

      4.易于測(cè)試

      5.React 只關(guān)注 View 層,所以可以和其它任何框架(如Backbone.js, Angular.js)一起使用

      17、展示組件(Presentational component)和容器組件(Container component)之間有何不同?

      答:1.展示組件關(guān)心組件看起來是什么。展示專門通過 props 接受數(shù)據(jù)和回調(diào),并且?guī)缀醪粫?huì)有自身的狀態(tài),但當(dāng)展示組件擁有自身的狀態(tài)時(shí),通常也只關(guān)心 UI 狀態(tài)而不是數(shù)據(jù)的狀態(tài)。

      2.容器組件則更關(guān)心組件是如何運(yùn)作的。容器組件會(huì)為展示組件或者其它容器組件提供數(shù)據(jù)和行為(behavior),它們會(huì)調(diào)用 Flux actions,并將其作為回調(diào)提供給展示組件。容器組件經(jīng)常是有狀態(tài)的,因?yàn)樗鼈兪?其它組件的)數(shù)據(jù)源

      18、類組件(Class component)和函數(shù)式組件(Functional component)之間有何不同?

      答:1.類組件不僅允許你使用

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)