【问题标题】:Reducer payload of array with new order does not update the state具有新顺序的数组的减速器有效负载不更新状态
【发布时间】:2020-05-19 12:59:38
【问题描述】:

首先,这里有一个 CodeSandbox:https://codesandbox.io/s/todolist-reducer-0y3mb?file=/src/context/TodosReducer.js

问题在于,即使我将带有新数组的有效负载传递给减速器,状态也没有更新。

我正在像这样重新排列数组:

  const rearrange = (array, source, destination) => {
    const newArray = [...array];
    const newItem = array[source];
    newArray.splice(source, 1);
    newArray.splice(destination, 0, newItem);

    return newArray;
  };

然后调度它:

  const endDrag = newArray => {
    dispatch({
      type: "endDrag",
      payload: newArray
    });
  };

然后我在reducer中返回新的状态。

 return {
        ...state,
        todos: action.payload
      };

记录有效载荷显示它是好的,但状态仍然没有更新。我正在使用 react beautiful dnd,所以可能与它有关。

【问题讨论】:

    标签: use-reducer use-context


    【解决方案1】:

    我发现问题并解决了!

    原来我在全局上下文提供程序中包装了我的容器组件,但在容器内也做了同样的事情。 这显然会导致这样的事情。如此简单,但我并没有想到。

    希望这个答案可以帮助那里的人。

    【讨论】:

      猜你喜欢
      • 2021-07-18
      • 2019-07-05
      • 2019-11-02
      • 2018-08-08
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多