Q: 有多少個state
,都是存放在哪?
A:
一個頁面甚至一個功能都可以擁有一個
state
,只不過給這個state叫不同的名字。所有的state
都以一個對象樹的形式存儲在唯一一個store
中。
Q:Redux三大原則
A:
單一數據源:整個應用的state都存在一個
object tree(store)
state
是只讀的:唯一可以改變state
的是觸發action
使用純函數來執行修改: 你需要編寫
reducer
來修改state
,盡量保持reducer
是純函數
Q:dispatch()
是怎么來的?connect
是怎樣連接組件和store
的?
A:
connect([mapStateToProps], [mapDispatchToProps], [mergeProps],[options])
作用:連接 React 組件與 Redux store
connect()的第一個參數mapStateToProps(Function),該參數會監聽store中state的變化。只要store中的state發生變化,該回調函數就是返回一個新對象,這個對象會與組件的props合并。如果沒有的話就監聽不到數據的變化那頁面也不會有更新。
connect()的第二個參數mapDispatchToProps(Object or Function)。<font color=red size=2.5>如果mapDispatchToProps省略的話,dispatch()會注入到組件的props中(這就是dispatch()的由來).</font> 如果是一個對象,我們需要將action和dispatch綁定并合入到props中。如果是一個函數,該函數將接受一個dispatch(),并返回一個對象,并通過bindActionCreators()將dispatch()和action綁定。
connect()將會被調用兩次。第一次是設置參數,第二次是組件與 store連接,mapStateToProps 函數接收整個 store 的 state 作為 props
Q: 觸發action
時,reducer
是如何觸發的?
A:
store會將action和當前的state傳入到reducer<font color=red size = 2.5>注意:</font>
不要在克隆state前修改它。
每個reducer只負責修改全局state中它所負責的一部分。
Q: reducer改變的state怎么反饋到store?
A :
let store = createStore(rootReducers, initialState);
Q:middleware
是什么
A:
middleware
是指可以被嵌入到框架接受請求到產生響應過程之中的代碼。在redux
中指的是action
被發起之后到達reducer
之前的拓展點。