在REACT中对数组使用推后,map不是函数ERROR

时间:2018-07-30 12:59:52

标签: javascript arrays reactjs dictionary push

我将一个元素推入一个function(event)中的数组, 将这个元素推送到数组后,我得到了这个错误,

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

lists.map不是函数。 列出反应成分

如果我这样写

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

但是当我手动定义列表时,它会很好地工作。当我在数组中推送一个新元素时,就会出现此错误。同样,如果push破坏了数组。 最好的问候

2 个答案:

答案 0 :(得分:1)

var item = items[0] 返回附加元素之后的数组长度,而不是数组,您需要的是item.seen = true

push

setState doesn't update the state immediately,您将需要使用回调,例如

concat

答案 1 :(得分:1)

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

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