Skip to content

redux 学习记录 #33

@Lmagic16

Description

@Lmagic16

redux 学习记录

redux 中文文档
redux 入门教程

redux 的来源与思想

1)来源:Redux 由 Flux 演变而来,但受 Elm (函数式编程语言)的启发,避开了 Flux 的复杂性。
2)思想:Web 应用是一个状态机,视图与状态是一一对应的。所有的状态,保存在一个对象里面。让 state 的变化变得可预测 。
3)三大原则:

  • 单一数据源(整个应用的 state 被储存在一棵 object tree 中,并且这个 object tree 只存在于唯一一个 store 中)
  • State 是只读的(唯一改变 state 的方法就是触发 action)
  • 使用纯函数来执行修改(通过 reducers 函数来修改 state tree)

redux 的适用场景

从应用的角度:

  • 用户的使用方式复杂
  • 不同身份的用户有不同的使用方式(比如普通用户和管理员)
  • 多个用户之间可以协作
  • 与服务器大量交互,或者使用了WebSocket
  • View要从多个来源获取数据

从组件的角度:

  • 某个组件的状态,需要共享
  • 某个状态需要在任何地方都可以拿到
  • 一个组件需要改变全局状态
  • 一个组件需要改变另一个组件的状态

基础部分

  1. state
    state 对象包含所有数据。一个 State 对应一个 View。只要 State 相同,View 就相同。

  2. action
    action 是把数据从应用传到 store 的有效载荷。通过 store.dispatch() 将 action 传到 store。或者通过 connect() 帮助器来调用dispatch。
    我们应该尽量减少在 action 中传递的数据。

  3. reducer
    reducer 是一个接收 state 和 action,并返回新的 state 的纯函数。
    纯函数:只要传入参数相同,返回计算得到的下一个 state 就一定相同。
    Reducers 指定了应用状态的变化如何响应 actions 并发送到 store 的,记住 actions 只是描述了有事情发生了这一事实,并没有描述应用如何更新 state。

  4. store
    Redux 应用只有一个单一的 store
    通过 createStore() 创建 store
    store的职责:

  • 维持应用的 state;
  • 提供 getState() 方法获取 state;
  • 提供 dispatch(action) 方法更新 state;
  • 通过 subscribe(listener) 注册监听器;
  • 通过 subscribe(listener) 返回的函数注销监听器。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions