gpt4 book ai didi

reactjs - ReduxReducer 复杂性问题

转载 作者:行者123 更新时间:2023-12-02 14:24:15 26 4
gpt4 key购买 nike

我目前正在用 javascript 重写一个大型桌面应用程序 - 具体来说,使用 React/Redux。不同操作的数量反射(reflect)了状态可能需要改变的不同方式的数量。目前,该应用程序中有超过 350 个操作。

状态很复杂,并且状态树的许多不同部分都存在相互依赖关系,因此不可能组合 reducer ,因为来自不同根 reducer 的隔离状态树不适用于此应用程序。

因此,我有一个主 reducer ,带有一个用于操作的 switch 语句 - 包含超过 350 个案例。对于每种情况,我都必须挑选所需的总体状态的位,并将其明确地传递给子 reducer 。大多数情况下,这个子 reducer (本身处理大量 Action 类型)会交给各种孙 reducer 等等。目前我的 reducer 树的深度为 5。

为了增加更多的复杂性,我的近 30% 的操作都是异步的,因此我使用 redux-thunk 来处理这些 - 在这种情况下很难做到正确。

我的问题是 - 是否有更好的 Flux 实现来处理这种级别的复杂性,或者是否有一种使用不同于规范的 Redux 的方法,并且允许我更轻松地管理此操作/ reducer 复杂性?

谢谢

最佳答案

我建议不要使用一个大型 reducer 来共享状态,而是建议在操作有效负载中提供更多信息,并将较小的 reducer 与combineReducers结合起来。您可以使用 redux-thunk 和 getState 函数参数来完成此操作。

  function action(id) {
return (dispatch, getState) => {
const value = getState().ui.form.value; // read part of state tree
dispatch({ type: 'ACTION', payload: { id, value } });
}
}

这样,您的 reducer 就可以在操作有效负载中获得所需的所有信息,而不必共享部分状态。

关于reactjs - ReduxReducer 复杂性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47091085/

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