首先单击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)})
}
}
答案 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}
}