三大原则:
1,单一数据源
2,state只读
3,纯函数执行修改
reducer是一个纯函数,接受state和action,返回新的state。
永远不要在reducer里面做这些操作:
- 修改传入参数
- 执行有副作用的操作,如API请求和路由跳转
- 调用非纯函数 如Date.now() Math.random()
action描述发生了什么
reducers根据action更新state
store有以下职责:
- 维持应用的state
- 提供getState()方法获取state
- 提供dispatch(action)更新state
- 通过subscribe(listener)注册监听器
- 通过subscribe(listener)返回函数注销监听器
使用combineReducers()将多个reducer合并成一个,并传递createStore()
import { createStore } from 'redux'
import todoApp from './reducers'
let store = createStore(todoApp)
严格的单向数据流是redux架构的设计核心一个组件就是一个状态机,对于特定地输入,它总返回一致的输出。