Javascript 如何解决redux减速器第二层状况的问题?

Javascript 如何解决redux减速器第二层状况的问题?,javascript,redux,Javascript,Redux,我正在制作一个应用程序,为学习方法提供任务。其中一个还原器应更改任务标记的状态:根据任务的解决方案,通过true或false。但此代码不会更改reducer的状态 我的代码: const initialStateMethods = { array: methodsObject }; const methods = (state = initialStateMethods, action) => { switch (action.type) { case "CHANGE_

我正在制作一个应用程序,为学习方法提供任务。其中一个还原器应更改任务标记的状态:根据任务的解决方案,通过true或false。但此代码不会更改reducer的状态

我的代码:


const initialStateMethods = {
  array: methodsObject
};

const methods = (state = initialStateMethods, action) => {
  switch (action.type) {
    case "CHANGE_MARK":
      return {
        ...state,
        array: state.array.map(method => {
          if (method.id === action.methodIndex) {
            method.tasks.map(task => {
              if (task.id === action.taskIndex) {
                return { ...task, mark: action.mark };
              } else {
                return task;
              }
            });
          }
          return method;
        })
      };

    default:
      return state;
  }
}; 
但是这种方法的价值很容易改变,而且很有效。 例如:

const methods = (state = initialStateMethods, action) => {
  switch (action.type) {
    case "CHANGE_MARK":
      return {
        ...state,
        array: state.array.map(method => {
          if (method.id === action.methodIndex) {
            return { ...method, name: "newName" };

          }
          return method;
        })
      };

    default:
      return state;
  }
};
所以我假设问题在多层结构中

原始对象的一小块:

export const methodsObject = [
  {
    name: "from()",
    id: 0,
    tasks: [
      {
        taskName: "Task №1",
        id: 0,
        mark: null
      },
      {
        taskName: "Task №2",
        id: 1,
        mark: null
      }
    ]
  }

映射循环调用旁边缺少return语句:

...
case "CHANGE_MARK":
  return {
    ...state,
    array: state.array.map(method => {
      if (method.id === action.methodIndex) {
        return method.tasks.map(task => {
          if (task.id === action.taskIndex) {
            return { ...task, mark: action.mark };
          } else {
            return task;
          }
        });
      }
      return method;
    })
  };

映射循环调用旁边缺少return语句:

...
case "CHANGE_MARK":
  return {
    ...state,
    array: state.array.map(method => {
      if (method.id === action.methodIndex) {
        return method.tasks.map(task => {
          if (task.id === action.taskIndex) {
            return { ...task, mark: action.mark };
          } else {
            return task;
          }
        });
      }
      return method;
    })
  };