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;
}
我收到错误消息“无法读取未定义的属性导航”。可能是什么问题? –
如果您正在使用react-navigation,请尝试像设置文档一样进行设置。 https://reactnavigation.org/docs/guides/redux#Handling-the-Hardware-Back-Button-in-Android –