Redux 中如何抽离出 action、reducer 和 store

阅读时长 5 分钟读完

在前端开发中,随着应用规模的扩大,状态管理变得尤为重要。Redux 是一种常用的状态管理工具,在开发中起到了非常重要的作用。Redux 的主要工作流程包括:通过 action 触发 reducer,更新 store。

在实际开发中,我们通常会将 action、reducer 和 store 抽离出来,以便于代码组织和维护。下面我们将具体介绍这一过程,并给出示例代码。

抽离 action

首先,我们需要定义 Redux 的 action。在 Redux 中,action 是一个普通的 JavaScript 对象,用于描述发生了什么事情。它包含一个 type 字段和一些可选的数据。

我们可以将所有的 action 定义在一个单独的文件中,例如 actions.js。示例代码如下:

-- -------------------- ---- -------
------ ----- ------------- - ----------------
------ ----- ------------- - ----------------
------ ----- -------------- - -----------------
------ ----- -------------- - -----------------

------ ----- ------------ - ------ -- -
  ------ -
    ----- --------------
    -----
  --
--

------ ----- ------------ - ------- -- -
  ------ -
    ----- --------------
    ------
  --
--

------ ----- ------------- - -- -- -
  ------ -
    ----- ---------------
  --
--

------ ----- ------------- - ------- -- -
  ------ -
    ----- ---------------
    ------
  --
--

在这个示例代码中,我们定义了四个 action 类型,分别用于描述登录成功、登录失败、退出成功和退出失败的情况。同时,我们定义了四个 action 创建函数,用于创建对应的 action。这样,在我们需要调用这些 action 时,只需要导入对应的函数,而不需要手动创建 action 对象。

抽离 reducer

接下来,我们需要定义 Redux 的 reducer。在 Redux 中,reducer 是一个纯函数,用于描述如何更新应用的状态。它接受两个参数:当前的状态和要处理的 action,返回一个新的状态。

我们可以将所有的 reducer 定义在一个单独的文件中,例如 reducers.js。示例代码如下:

-- -------------------- ---- -------
------ -
  --------------
  --------------
  ---------------
  ---------------
- ---- ------------

----- ------------ - -
  ----- -----
  ------ -----
--

----- ----------- - ------ - ------------- ------- -- -
  ------ ------------- -
    ---- --------------
      ------ -
        ---------
        ----- ------------
        ------ -----
      --
    ---- --------------
      ------ -
        ---------
        ----- -----
        ------ -------------
      --
    ---- ---------------
      ------ -
        ---------
        ----- -----
        ------ -----
      --
    ---- ---------------
      ------ -
        ---------
        ------ -------------
      --
    --------
      ------ ------
  -
--

------ ------- ------------

在这个示例代码中,我们定义了一个名为 authReducer 的 reducer,用于处理关于用户身份验证的 action。该 reducer 接受两个参数,分别是当前的状态和要处理的 action。根据不同的 action 类型,我们使用不同的逻辑更新状态。在代码中,我们使用了展开运算符 ... 以确保返回一个新的对象,而不是修改原来的对象。

抽离 store

最后,我们需要将 Redux 的 store 抽离出来。在 Redux 中,store 是一个单一的对象,包含了所有的应用状态。我们可以通过 createStore 函数来创建一个新的 store 实例,并将 reducer 传递给它以处理应用状态的更新。

我们可以将 store 的初始化代码写在一个单独的文件中,例如 store.js。示例代码如下:

在这个示例代码中,我们使用 createStore 函数创建了一个新的 store 实例,并将 authReducer reducer 传递给它以处理应用状态的更新。我们将 store 导出以便于在其他模块中使用。

总结

以上就是在 Redux 中如何抽离出 action、reducer 和 store 的完整流程。我们可以将所有的 action、reducer 和 store 分别定义在不同的文件中,以便于代码组织和维护。通过统一管理这些文件,我们可以快速地开发出实用且易于维护的 Redux 应用程序。

示例代码已发布到 GitHub 上:redux-architectural-patterns

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/647b8373968c7c53b06edf29

纠错
反馈