map is not a function 在 REACT 中对数组使用 push 后出现错误

map is not a function ERROR after using push on an array in REACT

我在函数(事件)中将元素推送到数组, 将此元素推入数组后出现此错误,

handleAddList(s) {
  this.setState({lists :this.state.lists.push(s) });
  console.log(this.state.lists);
}

lists.map 不是函数。 列出一个 React 组件

如果我这样写

handleAddList(s) {
  this.setState({lists :['something','something else']});
  console.log(this.state.lists);
}

但是当我手动定义列表时它运行良好。就在我在数组中推送一个新元素时,我收到了这个错误。另外,如果 push 破坏了数组。 最好的问候

push returns 追加元素后数组的长度而不是数组,你需要的是concat

handleAddList(s) {
    this.setState({lists :this.state.lists.concat([s]) });
}

另外你需要使用像

这样的回调
handleAddList(s) {
    this.setState({lists :this.state.lists.concat([s]) }, () => { console.log(this.state.lists)});
}

push的结果是数组的长度,这不是你想要的。您想用新对象创建一个新数组:

handleAddList(s) {
  this.setState(
    previousState => {
      return { lists: [...previousState.lists, s] };
    },
    () => {
      console.log(this.state);
    }
  );
}