gpt4 book ai didi

javascript - Redux:这种全能 Action 创建者模式是不是错了?

转载 作者:行者123 更新时间:2023-11-29 16:36:09 25 4
gpt4 key购买 nike

我是新手。我不确定,使用下面的模式是否错误/愚蠢?

import { createAction, handleActions } from "redux-actions";

const CHANGE_STATE = "appState/CHANGE_STATE";

export const changeState = createAction(CHANGE_STATE, (key, val) => ({ [key]: val }));

const initialState = {
maxBodySize: 1920,
isMaxBody: true,
isMobile: false
};

export default handleActions(
{
[CHANGE_STATE]: (state, { payload: changedState }) => {
const newState = {
...state,
...changedState
};
return newState;
}
},
initialState
);

每个状态只有一个actionCreator可编辑。像这样:

// Can editable every state with 'changeState' action.
appState.changeState("isMaxBody", true);
appState.changeState("isMobile", true);
appState.changeState("maxBodySize", 960);

我可以继续使用这个方便的模式吗?

如果这个模式不好,请给我一些指示。

最佳答案

Can I continue to use this handy pattern

我不明白你为什么“不能”。从严格意义上来说,这似乎完全有效。

至于这是否是一个好主意,这可以商榷,但我不建议使用这种模式。原因如下:

  • 您失去了“操作”和“状态修改”之间的抽象。很高兴能够说“执行此操作”,而不必担心实际的状态变化是什么。某些操作可能会修改状态的多个部分。所有这些都被从您手中抽象出来,使其更加受控和可测试。同样,由于类似的原因,这可能不适用于中间件等。
  • 修改字符串属性“看起来很恶心”,而且通常看起来很容易出错。如果您不小心在应用中的某个属性名称中输入了拼写错误,您将无法从工具中获得任何帮助。
  • 与上面类似,您将失去利用静态类型(例如流或 TypeScript)的任何能力。在团队中编写了一个相当大的 React/Redux 应用程序后,我强烈建议使用 TypeScript 之类的东西,而这种模式在强/静态类型应用程序中效果不佳。

这些是我的观点,来 self 的经验。如果该模式适合您以及您想要完成的任务,您可能会发现它就很好。

附注如果你要使用这样的模式,我不明白你为什么不这样做appState.changeState({isMaxBody: true}); 而不是 appState.changeState("isMaxBody", true);。它看起来更干净一些,至少更接近于允许更好的打字。

关于javascript - Redux:这种全能 Action 创建者模式是不是错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51275846/

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