当将方法分配给事件时,访问中的“this”会做出反应
Accessing `this` in react when assigning method to an event
提前道歉,我对React很陌生。
在printDocument
中,我甚至将oHiddFrame.onload = this.setPrint;
设置为this.setPrint
,但在第一次分配时,setPrint
中的this
出现Cannot set property '__container__' of undefined
的错误。
我正在render()中的按钮上设置onClick={this.printDocument.bind(null, this.props.document.view_href)}
。如何将"this"绑定到分配给它的实际事件?
非常感谢任何帮助或建议。
closePrint: function () {
document.body.removeChild(this.oHiddFrame.__container__);
},
setPrint: function () {
this.contentWindow.__container__ = this;
this.contentWindow.onbeforeunload = this.closePrint;
this.contentWindow.onafterprint = this.closePrint;
this.contentWindow.focus();
this.contentWindow.print();
},
printDocument: function (url) {
var oHiddFrame = document.createElement("iframe");
oHiddFrame.onload = this.setPrint;
oHiddFrame.style.visibility = "hidden";
oHiddFrame.style.position = "fixed";
oHiddFrame.style.right = "0";
oHiddFrame.style.bottom = "0";
oHiddFrame.src = url;
document.body.appendChild(oHiddFrame);
},
在ES5(classic)中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胖箭头自动将这个上下文绑定到函数,并为代码增加更多可读性。
更多信息:http://exploringjs.com/es6/ch_arrow-functions.html
您的onClick需要看起来像这样:onClick={this.printDocument.bind(this)}
,否则它将无法正确绑定到按钮。
在printDocument()
方法中,您可以随时调用this.props
并在其中使用您需要的任何内容。之后,您还可以直接在方法内部操作事件。
不确定这是否是你的要求。
将this
作为第一个参数传递给bind
。第一个参数是上下文,this
应该在绑定函数内,但您当前正在传递null
。
onClick={this.printDocument.bind(this, this.props.document.view_href)}
事件对象SyntheticMouseEvent
实例将是处理程序的最后一个参数。您可以在函数声明中添加另一个参数并引用它:
printDocument: function (url, event) {
...
}
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 在循环中分配json值时,值被覆盖
- 动态分配GA增强型电子商务跟踪器
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- $(this).prop('property') vs. this.property
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- 如何在jQuery中将函数的输出分配给变量
- 为集合分配大量的模型弹药
- onclick函数需要双击,因为类分配延迟
- 在另一个函数中使用变量this
- this.router在AngularJS 2中未定义
- Javascript 将变量分配给警报
- reactjs this.refs vs document.getElementById
- JavaScript 中的嵌套函数和 “this” 关键字
- React+Meteor:this.ops返回未定义
- 将节点数据分配给另一个变量jstree
- 引用实例为'this'在原型对象分配中
- 为什么人们在许多jQuery插件中分配$this=$(this)
- 当将方法分配给事件时,访问中的“this”会做出反应
- 如何附加事件" onblclick ",其处理程序在直接分配"this"作为参数