事件监听中this的用法

class PauseMenu extends React.Component{
    componentWillMount(){
        AppStateIOS.addEventListener('change', this.onAppPaused.bind(this));
    }
    onAppPaused(event){
    }
}

为什么上面的做法是错误的,而要单独把绑定的函数写成

class PauseMenu extends React.Component{
    constructor(props){
        super(props);
        this._onAppPaused = this.onAppPaused.bind(this);
    }
    componentWillMount(){
        AppStateIOS.addEventListener('change', this._onAppPaused);
    }
    onAppPaused(event){
    }
}

回复
阅读 2.7k
2 个回答

你在使用bind(this)之前使用了this.onAppPaused,那bind(this)这一步就没有意义了呀。现在绑定函数更多的使用箭头函数来处理:

AppStateIOS.addEventListener('change', (e) => this._onAppPaused(e, otherData));

本身你监听的回调函数this就是被监听者,你用自己去绑定自己,有什么用?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏