Redux 是一个 JavaScript 状态容器,它可以帮助我们管理应用的状态。Redux 核心理念是单一数据源,即整个应用状态被存储在一个 JavaScript 对象中,称为 state。
Redux 的工作流程如下:
-
Action:首先在应用中触发一个 Action,Action 是一个普通的 JavaScript 对象,用于描述一个事件或行为,例如用户点击了某个按钮,我们就可以触发一个 "ADD_TODO" Action。
-
Reducer:接着,Redux 中的 Reducer 函数会接收到这个 Action,并根据 Action 的类型更新应用的状态。Reducer 是一个纯函数,它接收旧状态和一个 Action 对象,返回一个新的状态对象。Redux 中的状态是不可变的,即每次更新状态,都会创建一个新的状态对象。
-
Store:Redux 状态存储在一个 Store 对象中,整个应用只有一个 Store 对象。Store 管理整个应用的状态,并提供了几个 API,例如 getState、dispatch、subscribe。getState 方法用于获取当前状态对象,dispatch 方法用于派发一个 Action,subscribe 方法用于监听状态变化。
-
View:组件中可以通过 connect 方法将 Redux 的状态和派发的 Action 映射到 Props 中,从而实现组件与状态的关联。组件中可以通过 props 获取状态,也可以通过 props 调用 dispatch 方法派发 Action,从而改变状态。
Redux 的使用:
-
安装 Redux:可以使用 npm 或 yarn 安装 redux 和 react-redux。
-
创建 Reducer:需要定义一个 Reducer 函数,它接收旧状态和一个 Action 对象,返回一个新的状态对象。
-
创建 Action:需要定义一个 Action 类型和一个 Action 创建函数,Action 创建函数返回一个 Action 对象。
-
创建 Store:使用 createStore 方法创建一个 Store 对象,传入 Reducer 函数作为参数。
-
配置 Provider:使用 Provider 组件将 Store 对象传递给应用的根组件。
-
连接组件:使用 connect 方法将组件中需要的状态和 Action 映射到 Props 中。
-
使用状态:在组件中通过 props 获取状态,也可以通过 props 调用 dispatch 方法派发 Action。