错误'这个'在Modal中尝试setState时

时间:2017-11-07 22:33:41

标签: javascript html reactjs react-native modal-dialog

我正在尝试删除确认模式。

  handleDelete (){
console.log('handleDelete')
const { something} = this.state
confirm({
  title: 'Are you sure you want delete?',
  content: 'Press Ok to continue, Cancel to return',
  onOk () {
    console.log('onOK')
    this.setState({ something: [] })
  }
})

}

按下删除按钮后,将显示确认模式。如果用户按下确定,那么它将删除确认模式后面的内容。

但删除无法完成。我有错误消息:

TypeError: this is undefined

在这一行:

this.setState({ something: [] })

我是否尝试在未安装的组件上设置状态? 那么正确的方法是什么?

3 个答案:

答案 0 :(得分:0)

您尚未发布组件的代码,但如果您使用的是asset.blade.php组件,那么在class内声明的任何方法都应该class {{1}对bind实例的对象,这样您就可以访问{"生活"的this对象。在这个实例中。

这通常在class的{​​{1}}中完成:

state

另一种方法是使用ES6 arrow functions,它将使用constructor关键字的词汇上下文,这意味着,如果你的处理程序在class内声明,那么词汇上下文此方法是constructor(props){ super(props); this.handleDelete = this.handleDelete.bind(this); } 本身,因此this关键字将引用class

class

答案 1 :(得分:0)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="table_id">
  <tr><th>row id</th><th>column 1</th><th>column 2</th></tr>
  <tr>
    <td><input class="input-class" value="row id 1"> 1
</td><td>row 1</td><td>row 1</td>
  </tr>
  <tr>
    <td><input class="input-class" value="row id 2"> 2
</td><td>row 2</td><td>row 2</td>
  </tr>
  <tr>
    <td><input class="dont-filter" value="row id 3"> 3
</td><td>row 3</td><td>row 3</td>
  </tr>
</table>

答案 2 :(得分:0)

您可以使用箭头功能,它起作用。

onOk: () => { console.log('onOK') this.setState({ something: [] }) }