我在每个屏幕上都有此代码。按下android后退按钮可返回1个屏幕。再按一次android后退按钮不会执行任何操作。只要堆栈中有更多的屏幕,预期的结果就是继续前进。缺少了什么?

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

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

最佳答案

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

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

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

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

09-15 13:04