Redux 学习笔记

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。

  • action 是纯声明式的数据结构,只提供事件的所有要素,不提供逻辑。
  • reducer 是一个匹配函数,action 的发送是全局的:所有的 reducer 都可以捕捉到并匹配与自己相关与否,相关则拿走 action 中的要素进行逻辑处理,修改 store 中的状态,不相关则不对 state 进行处理并原样返回。
  • store 负责存储状态并可以被 react api 回调,发布 action。

要点

  1. 应用中所有的 state 都以一个对象树的形式储存在一个单一的 store 中。
  2. 惟一改变 state 的办法是触发 action,一个描述发生什么的对象。

:不直接修改 state,编写专门的函数来决定每个 action 如何改变应用的 state,这个函数被叫做 reducer。

Action

是把数据从应用传到 store 的有效载荷。是 store 数据的唯一来源。通过 store.dispatch() 将 action 传到 store。

const action = {
  type: 'ADD_TODO',  // 一定有 type 字段
  payload: 'Learn Redux'
};

Reducer

(previousState, action) => {newState 的纯函数}

function todoApp(state = initialState, action) {
  switch (action.type) {
    case SET_VISIBILITY_FILTER:
      return Object.assign({}, state, {
        visibilityFilter: action.filter
      })
    default:
      return state
  }
}
//注意点:
//1\. 不要修改 state 值。如果符合条件,则新建一个副本返回(第一个参数为{}而不是 state);
//2\. 在 default 情况下返回旧的 state。

Store(单一)

  1. 维持应用的 state;

  2. 提供 getState() 方法获取 state;

  3. 提供 dispatch(action) 方法更新 state;

  4. 通过 subscribe(listener) 注册监听器;

  5. 通过unsubscribe(listener) 返回的函数注销监听器。

import { createStore } from 'redux';
import todoApp from './reducers';
let store = createStore(todoApp); //第二个参数可选,设置 state 的初始状态
combineReducers({ counter: counter, todos: todos}); //将两个reducer 合并在一起

数据流

  1. 调用store.dispatch(action)

  2. Redux store 调用传入的 reducer 函数。

  3. 根 reducer 应该把多个子 reducer 输出合并成一个单一的 state 树。

  4. Redux store 保存了根 reducer 返回的完整 state 树。

流程.png

参考文档:http://cn.redux.js.org/index.html

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • redux自述 Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 (如果你需要一个 Wor...
    WittyLu阅读 2,953评论 0 0
  • 是什么 Redux是一个状态管理库。 为什么要用 随着 JavaScript 单页应用开发日趋复杂,JavaScr...
    tiancai啊呆阅读 2,953评论 0 0
  • 学习必备要点: 首先弄明白,Redux在使用React开发应用时,起到什么作用——状态集中管理 弄清楚Redux是...
    贺贺v5阅读 12,899评论 10 58
  • Redux并不是只能在React应用中使用,而是可以在一般的应用中使用。一、首先来看一下redux的工作流: 可以...
    团猫咪爱吃玉米阅读 4,429评论 0 1
  • 曾经你爱我,我不懂爱,现在我爱上了你,你却离我越来越远,最悲痛的也莫过于此。难道我们今后真的再无缘见面!我们就这样...
    觅见阅读 1,616评论 0 0

友情链接更多精彩内容