javascript - 未捕获的类型错误 INCLUDES 不是函数

标签 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)})
  }
}

最佳答案

react 说数据是不可变的,据我所知,你的句柄点击也没有绑定(bind),因此这样做

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

然后复制状态

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

最后设置数据状态

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

关于javascript - 未捕获的类型错误 INCLUDES 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52744083/

相关文章:

javascript - async/await 不会将构建的数组返回到父 array.map()

javascript - 我怎样才能通过javascript知道html的显示部分是什么

reactjs - NextJS 中未加载 SCSS 模块

css - React-native 使用 flexbox 定义组件高度

javascript - .getAttribute 不是函数

javascript - 通过 GridView 的客户端 API 访问行数据

javascript - 从返回 'Undefined' 的函数返回变量

javascript - 替换数组状态中的元素(并受益于 ReactJS 快速渲染)

javascript - 缩放 html Canvas (html/reactjs)

javascript - 无法在 IE10 中创建 IndexedDB 数据库