作为“无效尝试传播不可迭代实例的无效尝试”而收到错误-状态未更新

时间:2018-11-02 06:16:44

标签: reactjs redux react-redux

我正在尝试更新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

2 个答案:

答案 0 :(得分:1)

代替

  

返回[...状态,{名称:action.payload}];

使用此

  

返回{...状态,名称:action.payload};

  

const payloadObj = {名称:action.payload}

     

返回{... state,... payloadObj};

答案 1 :(得分:0)

您的初始状态是JSON对象。

在语句的第一次运行期间返回[... state,{名称:action.payload}]; 它将以以下方式工作 ...状态=> ...初始状态=>名称:“ Arif” 因此,当您在数组中使用它时,它就像-> [name:“ Arif”,{name:action.payload}]是无效的。

您需要声明您的initialState如下

const initialState = [
  {
     name: "Arif"
  }
];