跳转至

Redux

Redux 是一个 JavaScript 的全局状态管理器。虽然主要是和 React 一起用,但只要是 JavaScript 就能用。

核心思想

  1. 全局状态(store
  2. 状态是 immutable 的,只能通过 action 获得新的状态
  3. 这就是 reducer,即 (state, action) => newState,注意 reducer 应当是纯函数的,不要有 side effect

Redux 相关包和工具

  1. Redux Core: redux
  2. Redux Toolkit: @reduxjs/toolkit,包含 Redux Core、Redux Thunk 和 Reselect,所以可以只添加这一个依赖
  3. React-Redux: react-redux
  4. Redux 浏览器扩展(DevTools)

拆解 React 组件

一个常见的 React 组件有:

  1. 状态
  2. 视图:基于状态、声明式、UI
  3. 动作:更新状态

React拆解

注:图来自 Redux 官方文档

但是当多个组件需要共享组件时,就不这么优雅了,Redux 试图使用一个全局状态来解决问题。

具体概念

  1. action:有 type 的纯对象,type 是一个字符串
  2. reducer(state, action) => newState,这个名字来自于 JavaScript 的 Array.reduce(),必须是纯函数
  3. storestore.dispatch(action)store.subscribe(listener)store.getState()