(1)reducer
reducer 只是一个接收 state 和 action,并返回新的 state 的函数。
reducer不应该直接修改传入的state,应该用newState进行缓存,再来修改newState
Reducers 指定了应用状态的变化如何响应actions并发送到 store 的,记住 actions 只是描述了有事情发生了这一事实,并没有描述应用如何更新 state。

不要在reducer里面进行:
- 修改传入参数
- 执行有副作用的操作,如 API 请求和路由跳转
- 调用非纯函数,如 Date.now() 或 Math.random()
reducer 返回的数据的处理,如何进行state的更新?
(2)Redux的三大原则
- 单一数据源
- state是只读的
- 使用纯函数来执行修改
(3)action
Action 是把数据从应用(译者注:这里之所以不叫 view 是因为这些数据有可能是服务器响应,用户输入或其它非 view 的数据 )传到 store 的有效载荷。它是 store 数据的唯一来源。一般来说你会通过
store.dispatch()
将 action 传到 store。
Action 本质上是 JavaScript 普通对象。我们约定,action 内必须使用一个字符串类型的 type 字段来表示将要执行的动作。多数情况下,type 会被定义成字符串常量。当应用规模越来越大时,建议使用单独的模块或文件来存放 action。
(4)数据流
严格的单向数据流是 Redux 架构的设计核心。
Redux 应用中数据的生命周期:
(5)容器组件与展示组件
容器组件就是使用
store.subscribe()
从 Redux state 树中读取部分数据,并通过 props 来把这些数据提供给要渲染的组件。
容器组件都用函数来表示
(6)每次store.dispatch会触发store.subscribe()?
(7)错误处理
- Reducers may not dispatch actions

需要给深拷贝已存在的state,然后操作newState,用newState去更新state
网友评论