Redux 中多个 reducer 如何合并

在 Redux 中,reducer 负责处理 action,更新 state。一个应用通常有多个 reducer,每个 reducer 负责处理 state 的一部分。这样做的好处是方便维护和扩展,但也带来了一个问题:如何把多个 reducer 合并成一个?

combineReducers

Redux 提供了一个 combineReducers 函数,可以将多个 reducer 合并成一个。这个函数接收一个对象作为参数,这个对象的键值对分别对应着应用中的每个 reducer。示例代码如下:

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

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

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

在这个示例代码中,我们将 todosReducer 和 visibilityFilterReducer 合并成一个 rootReducer。这样做的好处是,我们可以将这个 rootReducer 作为 createStore 函数的参数,创建一个 store,从而管理整个应用的 state。

combineReducers 的实现原理

combineReducers 的实现原理并不复杂。它实际上就是一个高阶函数,接收一个对象作为参数,返回一个新的 reducer 函数。这个新的 reducer 函数会调用每个子 reducer,并将它们的结果合并成一个新的 state 对象。示例代码如下:

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

在这个示例代码中,我们定义了一个名为 combineReducers 的函数,它接收一个对象 reducers 作为参数。这个函数返回一个新的 reducer 函数,这个新的 reducer 函数会调用 reducers 对象中的每个子 reducer,并将它们的结果合并成一个新的 state 对象。

总结

在 Redux 中,combineReducers 函数可以将多个 reducer 合并成一个。它的实现原理并不复杂,它实际上就是一个高阶函数。掌握 combineReducers 函数的使用和实现原理,可以帮助我们更好地理解 Redux 的工作原理,从而更好地应用 Redux。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65ce06e8add4f0e0ff725d1b