BackHandler不会返回超过1个屏幕

时间:2017-07-18 11:19:22

标签: react-native react-navigation

我在每个屏幕上都有这个代码。按下android后退按钮返回1个屏幕。再次按下android后退按钮不会做任何事情。只要堆栈中有更多屏幕,预期结果就是继续回归。有什么遗漏?

componentWillMount() {
    BackHandler.addEventListener('hardwareBackPress', () => {
        this.props.navigation.goBack();
        return true;
    });
}

componentWillUnmount() {
  BackHandler.removeEventListener('hardwareBackPress')
}

1 个答案:

答案 0 :(得分:9)

经过一些试验和错误后,此代码按预期工作。我相信我的初始代码实际上并没有删除事件监听器。

componentWillMount() {
    BackHandler.addEventListener('hardwareBackPress', this.backPressed);
}

componentWillUnmount() {
    BackHandler.removeEventListener('hardwareBackPress', this.backPressed);
}

backPressed = () => {
    this.props.navigation.goBack();
    return true;
}