【问题标题】:react Reducer - overwriting item but instead a double is generatedreact Reducer - 覆盖项目,但生成一个双精度
【发布时间】:2021-12-06 22:24:10
【问题描述】:

我想使用以下功能更改现有项目,但不会覆盖一个新项目。我的错误是什么?

  case "EDIT_KSTORY":
  return state.map((storie) => {
    if (
      storie.stories.storieID === action.sID &&
      storie.aNoteId === action.aNid
    ) {
      return {
        ...storie,

        stories: [
          ...storie.stories,
          {
            ...action.updates,
          },
        ],
      };
    } else {
      return storie;
    }
  });

【问题讨论】:

  • 您要覆盖哪个项目?

标签: reactjs react-redux redux-reducers


【解决方案1】:

尽量不要改变所有状态,并且只在应该更改数据的地方改变。我不知道所有的结构,移动但可能是:

case "EDIT_KSTORY": 
return {
    ...state,
    stories: state.stories.map((storie) => {
        if (
          storie.stories.storieID === action.sID &&
          storie.aNoteId === action.aNid
        ) {
          return {
            ...storie,
    
            stories: [
              ...storie.stories,
              {
                ...action.updates,
              },
            ],
          };
        } else {
          return storie;
        }
      });
}

【讨论】:

  • 感谢您的提示,但不起作用
  • 不会,您需要在单独的对象中重新构造您的减速器,并准确更新您需要的部分。但是不要将所有状态都改变为 state.map(....)
猜你喜欢
  • 2022-12-03
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
  • 2020-01-03
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 2023-02-16
相关资源
最近更新 更多