Redux流

首先我們有一個(gè)組件,這個(gè)組件要修改store中的數(shù)據(jù),他就從 Action Creater 中拿到一個(gè)action;組件將這個(gè)action使用 store.dispath(action) 發(fā)送給store。store接收到這個(gè)action, Stroe 就拿著這個(gè)action和當(dāng)前的state去問Reducer;Reducer接受到當(dāng)前的state和action后將新的state返回給Store;Store就用這個(gè)新的state更新自己,然后告訴組件要重新展示什么數(shù)據(jù)。
Redux中核心API
createStore //創(chuàng)建一個(gè)store
store.dispath(action) //派發(fā)一個(gè)action,這個(gè)action會傳遞給store
store.getState() //獲取store里面的所有內(nèi)容
store.subscribe(callback) //訂閱store的改變,只要store發(fā)生改變,它接受的這個(gè)回調(diào)函數(shù)就會執(zhí)行
Redux的三個(gè)基本原則
1. store是唯一的
2. 只有store才能改變自己的內(nèi)容
可能新手認(rèn)為是reducer在改變store的內(nèi)容,但不是這樣的。
reducer拿到一個(gè)action,然后創(chuàng)建一個(gè)新的state返回給store,然后store再用這個(gè)state更新自己。所以store的數(shù)據(jù)不是reducer更新的,而是store拿到reducer的數(shù)據(jù)自己對自己更新的。
3. reducer必須是純函數(shù)
純函數(shù)的定義是:給固定的一個(gè)輸入,就會返回一個(gè)固定的輸出,而且不會有副作用。
使用Action Creators 統(tǒng)一管理action
在組件那邊太多的action會讓頁面變得復(fù)雜、難以管理。所以我們將所有的action都放在actionCreators.js文件中,會讓邏輯更清晰
使用actionType來管理action的命名
redux的action事件是用字符串命名的,當(dāng)我們把a(bǔ)citon的變量名拼寫錯(cuò)誤的時(shí)候就會出現(xiàn)點(diǎn)了但沒反應(yīng)的情況,但是控制臺里得不到任何的報(bào)錯(cuò)信息。如果我們使用一個(gè)常量來定義action名的話一旦出現(xiàn)拼寫錯(cuò)誤就會報(bào)錯(cuò),這樣就可以避免因?yàn)閍ction名寫錯(cuò)而得不到報(bào)錯(cuò)信息的情況。