Вопрос:
Я пытаюсь обновить состояние onClick но получаю сообщение об ошибке:
Invalid attempt to spread non-iterable instance
Не в состоянии разобраться в проблеме. кто-нибудь мне помочь?
вот моя функция обновления:
import { UPDATE_NAME } from «./Actions/types»; const initialState = { name: «Arif» }; const rootReducer = (state = initialState, action) => { switch (action.type) { case UPDATE_NAME: console.log(«action.payload», action); return […state, { name: action.payload }]; } return state; }; export default rootReducer;
Live Demo
Лучший ответ:
Вместо
return [… state, {name: action.payload}];
использовать этот
return {… state, name: action.payload};
или же
const payloadObj = {имя: action.payload}
return {… state,… payloadObj};
Ответ №1
Ваше начальное состояние – объект JSON.
Во время первого запуска оператора return [… state, {name: action.payload}]; Он будет работать следующим образом… state =>… initialState => name: “Arif” Поскольку вы использовали его внутри массива, поэтому он вроде → [name: “Arif”, {name: action.payload}], который является недействительным.
Вы должны объявить ваш initialState следующим образом
const initialState = [ { name: «Arif» } ];