站長資訊網
        最全最豐富的資訊網站

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

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

        1、redux中間件

        答:中間件提供第三方插件的模式,自定義攔截 action -> reducer 的過程。變為 action -> middlewares -> reducer 。這種機制可以讓我們改變數據流,實現如異步 action ,action 過濾,日志輸出,異常報告等功能。

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

        2、redux有什么缺點

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

        2.當一個組件相關數據更新時,即使父組件不需要用到這個組件,父組件還是會重新render,可能會有效率影響,或者需要寫復雜的shouldComponentUpdate進行判斷。

        3、react組件的劃分業務組件技術組件?

        答:根據組件的職責通常把組件分為UI組件和容器組件。UI 組件負責 UI 的呈現,容器組件負責管理數據和邏輯。兩者通過React-Redux 提供connect方法聯系起來。

        4、react生命周期函數

        答:一、初始化階段:

        getDefaultProps:獲取實例的默認屬性

        getInitialState:獲取每個實例的初始化狀態

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

        render:組件在這里生成虛擬的DOM節點

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

        二、運行中狀態:

        componentWillReceiveProps:組件將要接收到屬性的時候調用

        shouldComponentUpdate:組件接受到新屬性或者新狀態的時候(可以返回false,接收數據后不更新,阻止render調用,后面的函數不會被繼續執行了)

        componentWillUpdate:組件即將更新不能修改屬性和狀態

        render:組件重新描繪

        componentDidUpdate:組件已經更新

        三、銷毀階段:

        componentWillUnmount:組件即將銷毀

        5、react性能優化是哪個周期函數?

        答:shouldComponentUpdate 這個方法用來判斷是否需要調用render方法重新描繪dom。因為dom的描繪非常消耗性能,如果我們能在shouldComponentUpdate方法中能夠寫出更優化的dom diff算法,可以極大的提高性能。

        6、為什么虛擬dom會提高性能?

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

        具體實現步驟如下:

        1.用 JavaScript 對象結構表示 DOM 樹的結構;然后用這個樹構建一個真正的 DOM 樹,插到文檔當中;

        2.當狀態變更的時候,重新構造一棵新的對象樹。然后用新的樹和舊的樹進行比較,記錄兩棵樹差異;

        把2所記錄的差異應用到步驟1所構建的真正的DOM樹上,視圖就更新了。

        7、diff算法?

        答:1.把樹形結構按照層級分解,只比較同級元素。

        2.給列表結構的每個單元添加唯一的key屬性,方便比較。

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

        4.合并操作,調用 component 的 setState 方法的時候, React 將其標記為 dirty.到每一個事件循環結束, React 檢查所有標記 dirty 的 component 重新繪制.

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

        8、react性能優化方案

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

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

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

        9、簡述flux 思想

        答:Flux 的最大特點,就是數據的"單向流動"。

        1.用戶訪問 View

        2.View 發出用戶的 Action

        3.Dispatcher 收到 Action,要求 Store 進行相應的更新

        4.Store 更新后,發出一個"change"事件

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

        10、React項目用過什么腳手架?Mern? Yeoman?

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

        11、你了解React嗎?

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

        12、React解決了什么問題?

        答:解決了三個問題: 1.組件復用問題, 2.性能問題,3.兼容性問題:

        13、React的協議?

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

        14、了解shouldComponentUpdate嗎?

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

        15、React 的工作原理?

        答:React 會創建一個虛擬 DOM(virtual DOM)。當一個組件中的狀態改變時,React 首先會通過 "diffing" 算法來標記虛擬 DOM 中的改變,第二步是調節(reconciliation),會用 diff 的結果來更新 DOM。

        16、使用 React 有何優點?

        答:1.只需查看 render 函數就會很容易知道一個組件是如何被渲染的

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

        3.支持服務端渲染,這可以改進 SEO 和性能

        4.易于測試

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

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

        答:1.展示組件關心組件看起來是什么。展示專門通過 props 接受數據和回調,并且幾乎不會有自身的狀態,但當展示組件擁有自身的狀態時,通常也只關心 UI 狀態而不是數據的狀態。

        2.容器組件則更關心組件是如何運作的。容器組件會為展示組件或者其它容器組件提供數據和行為(behavior),它們會調用 Flux actions,并將其作為回調提供給展示組件。容器組件經常是有狀態的,因為它們是(其它組件的)數據源

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

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

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 青青青青久久精品国产h久久精品五福影院1421 | 欧洲精品99毛片免费高清观看| 久久久91精品国产一区二区三区 | 亚洲AV无码乱码精品国产 | 欧美日韩精品系列一区二区三区| 国内精品51视频在线观看| 十八18禁国产精品www| 欧美亚洲成人精品| 99热这里只有精品国产66| 999在线视频精品免费播放观看| 亚洲线精品一区二区三区 | 色欲久久久天天天综合网精品| 精品国产免费人成网站| 91精品国产综合久久四虎久久无码一级| 精品无码人妻一区二区三区| 亚洲欧美日韩国产精品一区二区| 国产一区二区精品久久岳| 国产精品被窝福利一区| 亚洲欧洲国产精品你懂的| 国产精品视频久久| 国产精品久久久久久久久| 1024国产欧美日韩精品| 3D动漫精品啪啪一区二区下载| 久久久久99精品成人片直播| 亚洲精品无码av人在线观看| 香港aa三级久久三级老师2021国产三级精品三级在 | 999在线视频精品免费播放观看| 精品一区二区三区无码免费视频| 亚洲综合精品香蕉久久网| 亚洲国产精品一区二区第一页免| 久久免费99精品国产自在现线| 精品中文高清欧美| 欧美日韩精品系列一区二区三区| 久久这里有精品视频| 四虎精品免费永久免费视频| 欧美久久亚洲精品| 在线亚洲欧美中文精品| 亚洲欧美日韩国产成人精品影院| 一本一本久久a久久综合精品蜜桃| 中文字幕一精品亚洲无线一区 | 久久久久这里只有精品|