如何从Ecmascript 6(ES6)上类对象中的事件回调函数访问对象成员
How to access an object member from event callback function in a class object on Ecmascript 6 (ES6)
我得到了这个:
class Register {
render(){
return (<div onchange={this.aFunction}></div>)
};
aFunction(event){
this.printSomething(); //Uncaught TypeError: undefined is not a function
}
printSomething(){
console.log('Horray');
}
}
如何从aFunction中调用printSomething?Es6真的让我很困惑。
谢谢。
您会注意到,当将ES6类与React一起使用时,情况发生了很大变化。
此外,ES6类不会像ES5React.createClass
那样自动绑定。
因此,您需要正确绑定函数的this
你有两个选项
1.使用箭头功能
render(){
return <div onchange={event => this.aFunction(event)}></div>;
}
2.使用绑定
render(){
return <div onchange={this.aFunction.bind(this)}></div>;
}
我想你使用的是React.js。如果你是,你需要更新
class Register
至
class Register extends React.Component
我认为问题是render
上的this
绑定在div上。
var foo = new Register;
var div = foo.render();
div.onchange(); // this is div, not foo
foo.aFunction(); // doesn't throw TypeError.
相关文章:
- 将事件附加到对象/数组
- 在创建对象后附加一个jquery事件
- JavaScript:点击事件中对象的值
- 如何从已注册的事件发送 JavaScript 对象
- jsplumb中的Click事件处理程序丢失“;这个“;对象
- 枚举附加到文档的HTML对象的所有事件
- 通过单击事件识别画布上的对象
- jQuery UI draggable:绑定到mousemove事件中的对象
- 如果在对象上触发了dispatchEvent,我如何才能找到如何侦听它以及在哪里调度事件
- 如何从jQuery的事件对象中检索属性
- 如何在动态创建元素的内联onclick事件中传递对象
- 如何在JavaScript中基于事件对象获取文件名
- 如何在不删除类似侦听器的情况下从父对象中删除jQuery事件侦听器
- YES或NO表示对象事件中的分号
- Javascript关闭DOM对象事件和事件冒泡
- 存储对象事件的内容
- 将 JS 函数附加到动态创建的对象事件
- 未捕获的类型错误:对象 #<事件> 没有方法“拆分”
- javascript中的ONDELETE对象事件
- 嵌套对象事件