在为事件分配方法时,在响应中访问`this`

时间:2016-07-21 20:07:03

标签: javascript reactjs jsx

提前道歉,我对React很新。

printDocument我将oHiddFrame.onload = this.setPrint;设置为this.setPrint,但Cannot set property '__container__' of undefined的{​​{1}}错误为this第一次任务。

我在render()中的按钮上设置setPrint。我如何绑定"这个"对于实际的事件,我将其分配给?

非常感谢任何帮助或建议。

onClick={this.printDocument.bind(null, this.props.document.view_href)}

3 个答案:

答案 0 :(得分:2)

ES5 经典)中Javascript:

onClick={this.printDocument.bind(this, this.props.document.view_href)}

ES6 (使用 babel https://babeljs.io/))Javascript:

onClick={() => this.printDocument(this.props.document.view_href)}

ES6 fat-arrows将上下文自动绑定到该函数,并为代码添加更多可读性。

更多信息: http://exploringjs.com/es6/ch_arrow-functions.html

答案 1 :(得分:0)

你的onClick需要如下所示: modelBuilder.Entity<Blog>() .HasOne(p => p.Document) .WithOne(i => i.CancelNote) .HasForeignKey<Document>(b => b.CancelNoteForeignKey); ,否则它不会正确绑定到按钮。

onClick={this.printDocument.bind(this)}内部方法中,您始终可以调用printDocument()并使用您需要的任何内容。您也可以在之后的方法内操作事件。

不确定这是不是你在问什么。

答案 2 :(得分:0)

this作为bind的第一个参数传递。第一个参数是上下文,this应该在绑定函数中,但您当前正在传递null

onClick={this.printDocument.bind(this, this.props.document.view_href)}

事件对象SyntheticMouseEvent实例将是处理程序的最后一个参数。您可以在函数声明中添加另一个参数并引用它:

 printDocument: function (url, event) {
   ...
 }