Почему я получаю ошибку повторной мутации и как я могу ее избежать?

#reactjs #redux #react-redux

#reactjs #redux #react-redux

Вопрос:

Я использую moment для некоторых утилит date и сохраняю данные в redux. После заполнения формы и поиска данных в серверной части я получаю эту ошибку, но я получаю ее только при первом поиске:

 Error: Invariant failed: A state mutation was detected between dispatches, in the path 'app.departureDate._locale._longDateFormat.ll'.  This may cause incorrect behavior.
 

Это редуктор:

 addDepartureDate(state, action) {
   return { ...state, departureDate: action.payload };
}
 

И здесь я использую данные:

 const {
    flightType, 
    localeConfig,
    departure,
    arrival,
    departureDate,
    arrivalDate,
    currency
} = useSelector(state => state.app);
const startDate = departureDate;
 

И значение изменяется только тогда, когда из реагирующих дат выбирается новая дата, но тогда ошибка не выдается, я получаю ошибку после попытки получить данные из серверной части.

Комментарии:

1. Какой фактический тип данных хранится в этом пути состояния? Это moment экземпляр?

2. да, это объект moment, но инициализируется как пустая строка

Ответ №1:

moment Экземпляр является изменяемым и не сериализуемым и, следовательно, не должен храниться в хранилище Redux:

Предпочитаю хранить значения даты в хранилище в виде числовых временных меток или строк (например, date.toISOString() , и т. Д.)