gpt4 book ai didi

javascript - reduceReducers() 如何工作?

转载 作者:数据小太阳 更新时间:2023-10-29 04:35:58 26 4
gpt4 key购买 nike

代码来自the reduce-reducer repo :

   export function reduceReducers(...reducers) {
return (previous, current) =>
reducers.reduce(
(p, r) => r(p, current),
previous
);
}

据我了解,此功能的目的是在 Redux 中展平不同的状态切片,see here ,但我不明白这个功能是如何工作的。我有 looked up MDN ,还是不明白。

什么叫previouscurrentpr代表什么。我无法识别正在调用的变量。

编辑

Mark Erikson在他的 Practical Redux Series 中定义了这个函数:

reduceReducers is a nifty little utility. It lets us supply multiple reducer functions as arguments and effectively forms a pipeline out of those functions, then returns a new reducer function. If we call that new reducer with the top-level state, it will call the first input reducer with the state, pass the output of that to the second input reducer, and so on.

编辑2

I wrote a post解释 reduceReducers()。

最佳答案

这样写可能会更清楚一些:

export function reduceReducers(...reducers) {
return function (state, action) {
const reducerFunction = function (accumulator, currentValue) {
return currentValue(accumulator, action);
}

return reducers.reduce(reducerFunction, state);
}
}

参数和变量:

  • reducers:您要归约的 reducer 数组。在您链接的问题中,这将是 [reducerAdd, reducerMult]
  • state:(以前是previous)redux状态对象
  • action:(以前的current) Action 对象
  • accumulator:(以前的 p)reduce() 函数使用的对象。初始值为之前的redux状态
  • currentValue:(以前的 r)当前由 reduce() 函数运行的 reducer 函数

reduceReducers() 返回一个函数(在您的链接答案中它是 addAndMult() 函数),它在处理调度的操作时被 redux 调用。 redux 通过当前操作传递它之前的状态。

reduce() 在使用 reducerFunction(以前是匿名箭头)的 reducer 数组 ([reducerAdd, reducerMult]) 上运行函数,但为了清楚起见我给它命名了)以依次调用传入的 redux 状态对象上的每个 reducer。

希望这是有道理的。

关于javascript - reduceReducers() 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48104778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com