三大原則:
1,單一數(shù)據(jù)源
2,state只讀
3务荆,純函數(shù)執(zhí)行修改
reducer是一個(gè)純函數(shù),接受state和action穷遂,返回新的state函匕。
永遠(yuǎn)不要在reducer里面做這些操作:
- 修改傳入?yún)?shù)
- 執(zhí)行有副作用的操作,如API請求和路由跳轉(zhuǎn)
- 調(diào)用非純函數(shù) 如Date.now()? Math.random()
action描述發(fā)生了什么
reducers根據(jù)action更新state
store有以下職責(zé):
- 維持應(yīng)用的state
- 提供getState()方法獲取state
- 提供dispatch(action)更新state
- 通過subscribe(listener)注冊監(jiān)聽器
- 通過subscribe(listener)返回函數(shù)注銷監(jiān)聽器
使用combineReducers()將多個(gè)reducer合并成一個(gè)塞颁,并傳遞createStore()
import { createStore } from 'redux'
import todoApp from './reducers'
let store = createStore(todoApp)
嚴(yán)格的單向數(shù)據(jù)流是redux架構(gòu)的設(shè)計(jì)核心一個(gè)組件就是一個(gè)狀態(tài)機(jī)浦箱,對于特定地輸入,它總返回一致的輸出祠锣。