未捕获的typeerror INCLUDES不是函数

时间:2018-10-10 15:44:29

标签: javascript reactjs

首先单击arr中的项目控制台日志项。第二次单击返回错误未捕获的类型错误包括不是一个函数。控制台日志的arr为1。

Chrome浏览器

constructor(props){
super(props)
this.state = {
  arr = []
}
this.handleClick = this.handleClick.bind(this);
}

handleClick(e) {
  let arr = this.state.arr
  let item = e.target.id
  if (!arr.includes(item)) {
    this.setState({arr: arr.push(item)})
  } else {
    this.setState({arr: arr.filter(x => x !== item)})
  }
}

1 个答案:

答案 0 :(得分:1)

react表示数据是不可变的,据我所知,您的句柄单击没有被绑定,因此可以这样做

handleClick = (e)=> {
  let arr = this.state.arr
}

然后复制状态

handleClick = (e)=> {
  let arr = Object.assign([],this.state.arr)
}

以及数据的最终设置状态

handleClick = (e)=> {
  .....
  this.setState({arr: newArr})
 //{arr: arr}
  }