Redux

作者: 西兰花伟大炮 | 来源:发表于2019-02-20 13:57 被阅读0次
(1)reducer

reducer 只是一个接收 state 和 action,并返回新的 state 的函数。


reducer不应该直接修改传入的state,应该用newState进行缓存,再来修改newState


Reducers 指定了应用状态的变化如何响应actions并发送到 store 的,记住 actions 只是描述了有事情发生了这一事实,并没有描述应用如何更新 state。

image.png

不要在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

image.png

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

相关文章

网友评论

      本文标题:Redux

      本文链接:https://www.haomeiwen.com/subject/dbsvpftx.html