react navigation screen add back listener

在一个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();
    }
}

你可能感兴趣的:(react navigation screen add back listener)