大家好,這一次呢,我們來說一下redux的面試題。
第1題, redux有什麼好處?
Maintain ability, 由於代碼風格要求比較嚴格,所以可維護性比較強。
Organization, 代碼的組織性比較好, 這樣實際上做工作的時候相對容易。
Server rendering. 服務器端創建的store會轉發到客戶端。
Developer tools. 方便而強大的開發者工具為調試和實時的開發提供了便利。
Ease of testing. 小函數,基本上只用來做一件事情,這使得整個測試變得非常簡單。
第2題, Redux跟mvc和flux有什麼區別?
先說一下mvc,mvc把整個應用分成數據層,表示層和邏輯層。當數據變化比較多的時候,系統變得會比較複雜,調試就需要更多的經驗。
再說一下flux。Flux跟redux比較接近。通過event subscription來管理數據的變化。回調加載機制跟redux比較接近。
第3題 說一下功能化編程的概念。
在redux中使用了功能化編程的概念。
在參數中可以傳遞函數。
使用了數據流控制, 遞歸調用, 函數和數組等等。
幫助函數, 如reduce和map filter被大量使用。
允許函數的串聯。
狀態只讀。
代碼執行順序的優先級沒有必要考慮。
第4題,如何改變狀態?
當一個action被執行的時候,我們可以去改變狀態。
假設如下流程:
用戶點擊一個按鈕
一個函數會被調用
一個action會被髮出給處理容器, 這個容器需要用map dispatch to props來註冊這個action。
Reducer會根據action來改變狀態。
狀態的改變會被處理容器注意到, map state to props。
第5題,redux在哪裡使用?
Relax主要用在需要交互性的複雜場景中。可以跟很多框架結合使用, 比如angular, vue, meteor, react。
第6題, 解釋一下典型的react 和 redux數據流。
首先是dispatch一個action。
然後reducer會收到這個action, 根據這個action對狀態進行修改。
狀態修改以後會被處理容器捕捉到。
從而對相關的界面進行更新。
第7題, 什麼是redux的store?
Store存放應用程序的狀態,並且有幫助函數來訪問這些狀態。
Store可以用來聆聽變化和發送action。
Store只有一個。
你可以創建很多sub stores。
第8題, 解釋一下redux裡面的reducers。
數據的狀態是通過reducer函數來改變的。
第9題, 解釋一下redux的工作流特徵。
Reset. 允許狀態的重置。
Revert. 允許回退最近的一次改變。
Sweep. 那些失效的, 錯誤的actions,可以被刪除。
Commit. 把當前狀態提交,作為新的初始狀態。
第10題,解釋一下redux裡面的actions。
Actions代表的是一個對象。有兩部分,一個是action本身,另一個就是它的payload。簡單說就是對哪些數據進行哪些操作。
閱讀更多 丁哥開講 的文章