#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
в редукторе, но это отдельная проблема, которая не должна иметь ничего общего с ошибкой в вашем вопросе