如何从 Ecmascript 6 (ES6) 上的 class 对象中的事件回调函数访问对象成员

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');
    }

}

如何从函数中调用 printSomething? Es6 真让我迷惑。

谢谢。

我认为问题在于 render 上的 this 绑定在 div 上。

var foo = new Register;
var div = foo.render();
div.onchange(); // this is div, not foo
foo.aFunction(); // doesn't throw TypeError.

你会注意到,当使用 ES6 类 和 React a lot has changed

此外,ES6 类 不像 ES5 React.createClass 那样 autobind

因此,您需要正确绑定函数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