Добавление новых результатов в существующее состояние redux «состояние, не подлежащее повторению» ошибка

#javascript #redux

#javascript #redux

Вопрос:

Это показывает ошибку «state.users не повторяется». Я хочу добавить дополнительные результаты поиска к текущему списку пользователей в состоянии. Я пытаюсь сделать это, скопировав предыдущее состояние и объединив его с новым состоянием.

 const initialState = {
 users: [],
 loading: false,
};


export default function (state = initialState, action) {
  switch (action.type) {
    case SET_SEARCH_USERS:
      return {
        ...state,
        users: [...state.users, action.payload.users],
        loading: false,
        };
    default:
      return state;
  }
}
  

Почему это не работает?

Ответ №1:

Поскольку звучит так, как будто вы хотите users , чтобы это был массив, убедитесь, что форма начального состояния соответствует типу, возвращаемому в редукторе, чтобы его можно было распространить по желанию:

 const initialState = {
  users: [],
  loading: false,
};
  

Объекты не могут быть распределены по массивам — только массивы и другие итеративные объекты могут быть распределены по массивам.

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

1. Дважды проверьте, что вы сохранили / повторно скомпилировали / повторно запустили код — учитывая код в ответе, было бы бессмысленно, чтобы ошибка, которую вы описываете, продолжала возникать.

2. Как изменится оператор return, если я хочу, чтобы пользователи были объектами?

3. Вы имеете в виду, что каждый отдельный пользователь является объектом? Это вообще не изменится.

4. Если action.payload.users это массив пользователей, вы бы хотели распространить его: ...action.payload.users в редукторе, но это отдельная проблема, которая не должна иметь ничего общего с ошибкой в вашем вопросе