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();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容