npm 包 redux-strategic-reducer 使用教程

阅读时长 13 分钟读完

简介

redux-strategic-reducer 是一个基于 Redux 的状态管理工具,它可以让你通过定义 reducer 的策略来轻松地管理应用状态。与传统的 reducer 不同,redux-strategic-reducer 更加灵活,可以让你更加方便地处理复杂的状态管理需求。

本文将详细介绍 redux-strategic-reducer 的使用方法,包括安装、配置、使用以及几个实用的示例。

安装

使用 npm 安装:

配置

redux-strategic-reducer 的配置非常简单,只需要在你的 Redux store 的配置中添加一个名为 strategicReducer 的参数,就可以让 redux-strategic-reducer 开始工作了。

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

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

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

注意,在使用 redux-strategic-reducer 前,你必须先定义自己的纯函数 reducer。

使用

定义 reducer 的策略

redux-strategic-reducer 允许你通过定义 reducer 的策略来更加灵活地管理状态。策略就是一个对象,它的每一个属性对应一个 action 的 type,属性的值是一个函数,它将接收当前 state 和 action 作为参数,然后返回一个新的 state。

下面是一个简单的策略示例:

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

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

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

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

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

在这个示例中,我们定义了一个 INCREMENT 的策略,它将把 state 中的 count 增加 2,而不是原本的 1。

在组件中使用

当你在组件中使用 redux-strategic-reducer 时,你可以像使用普通的 redux store 一样使用它:

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

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

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

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

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

使用 combineReducers

redux-strategic-reducer 同样兼容使用 combineReducers 的场景,只需要将 strategicReducer 作为 combineReducers 的参数即可:

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

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

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

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

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

异步 action

redux-strategic-reducer 与 Redux-thunk, Saga 或其他的异步库搭配使用时并不会产生冲突。你可以随意地使用所有的异步 action 实现方式,因为 redux-strategic-reducer 本身并不关心问题所在。

示例

全局 loading 状态

在一个应用中,我们经常需要在异步请求开始和结束时显示 loading 状态。使用 redux-strategic-reducer,可以很方便地实现全局的 loading 状态,而不需要在每个异步请求的 action 中都手动 dispatch 开始和结束的 action。

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

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

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

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

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

在这个示例中,我们定义了两个 action:*_START*_STOP,他们会在每个异步请求的开始和结束时触发。我们使用通配符来匹配所有符合规则的 action,避免了手动在每个 action 中都 dispatch 开始和结束 action 的麻烦。

多级数据结构

redux-strategic-reducer 使得处理多级数据非常方便。例如,你可以使用数组和对象来表示树形结构的数据,然后在 reducer 中定义各自的策略来管理它们。

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

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

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

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

在这个示例中,我们使用数组来表示多级数据结构中的节点,并通过 reducer 的策略来管理它们。我们定义了 ADD_NODEUPDATE_NODEDELETE_NODE 三个策略,分别用于增加、更新和删除节点。

表单数据

在表单提交时,我们通常需要收集用户的输入,并将其转化为一个对象,然后在提交时将数据提交给后端服务。我们可以使用 redux-strategic-reducer 来处理表单数据,同时允许我们轻松地对它们进行增加、更新和删除。

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

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

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

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

在这个示例中,我们定义了 ADD_DATAUPDATE_DATADELETE_DATA 三个策略,用于增加、更新和删除表单数据。

总结

redux-strategic-reducer 是一个非常方便的状态管理工具,它提供了灵活的 reducer 策略来帮助开发者更加方便地管理复杂的应用状态。如果你正在寻找一种更加灵活的状态管理方式,那么 redux-strategic-reducer 就是你需要的工具。

本文主要介绍了 redux-strategic-reducer 的安装、配置、使用以及几个示例,希望能够帮助你在实际开发中更加方便地使用它。如果你有任何问题或建议,都可以在评论区留言,我会尽快回复你。

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

纠错
反馈