Redux-toolkit 深度嵌套平面映射数据不更新状态

Redux-toolkit deeply nested flatmapped data not updating state

我有深度嵌套的数据,需要更新一些深度嵌套的子数据。目前我通过平面映射两个上层列表,然后搜索所有可能的任务,然后通过调用 init 函数改变任务来做到这一点。

const tasks = state.data.flatMap((p) => p.hierarchyLines).flatMap((h) => h?.tasks);
const task = tasks.find((t) => t?.id === payload.id);
task?.init(payload);

task.init(数据:任意):

this.id = _data["id"];
this.start = _data["start"] ? new Date(_data["start"].toString()) : <any>undefined;
this.deadline = _data["deadline"] ? new Date(_data["deadline"].toString()) : <any>undefined;
...

这不起作用,关于为什么它不更新状态有什么建议吗?

如果有人 运行 遇到类似的问题。问题是 immer 不能很好地处理 类。 https://immerjs.github.io/immer/complex-objects

对我来说,解决方案是先复制状态,然后对其进行变异,然后按照此处所述返回副本:https://redux-toolkit.js.org/usage/immer-reducers#immer-usage-patterns

    builder.addCase(fetch.fulfilled, (state, { payload }) => {
      const stateCopy = _.cloneDeep(state);
      stateCopy.loading = false;
      const tasks = stateCopy.data.flatMap((p) => p.hierarchyLines).flatMap((h) => h?.tasks);
      const task = tasks.find((t) => t?.id === payload.id);
      task?.init(payload);
      return stateCopy;
    });