在 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