BackHandler不会返回超过1个屏幕

问题描述:

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

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; 
} 
+0

我收到错误消息“无法读取未定义的属性导航”。可能是什么问题? –

+0

如果您正在使用react-navigation,请尝试像设置文档一样进行设置。 https://reactnavigation.org/docs/guides/redux#Handling-the-Hardware-Back-Button-in-Android –