在一个component里面加上对返回键的监听,但是如果有一个新的screen push过来,返回键的监听依旧存在,所以需要在页面切换的时候,对监听进行注销与重新注册。
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.didFocusSubscription = props.navigation.addListener('didFocus', () => {
BackHandler.addEventListener('hardwareBackPress', this.backPress);
});
}
componentDidMount() {
this._willBlurSubscription = this.props.navigation.addListener('willBlur', () => {
BackHandler.removeEventListener('hardwareBackPress', this.backPress);
});
}
componentWillUnmount() {
if (this.didFocusSubscription) this.didFocusSubscription.remove();
if (this._willBlurSubscription) this._willBlurSubscription.remove();
}
}