Редуктор полезной нагрузки массива с новым порядком не обновляет состояние

Прежде всего, вот 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
    });
  };

Затем я возвращаю новое состояние в редуктор.

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

Регистрация полезной нагрузки показывает, что все в порядке, но состояние по-прежнему не обновляется. Я использую react beautiful dnd, так что, возможно, это как-то связано с этим.


person Mattias Bregnballe    schedule 19.05.2020    source источник


Ответы (1)


Я нашел проблему и исправил ее!

Оказывается, я оборачивал свой контейнерный компонент в глобальном поставщике контекста, но делал то же самое и внутри контейнера. Это, по-видимому, может вызвать что-то вроде этого. Все так просто, но мне в голову не приходило.

Надеюсь, этот ответ поможет кому-то там.

person Mattias Bregnballe    schedule 19.05.2020