我在每个屏幕上都有这个代码。按下android后退按钮返回1个屏幕。再次按下android后退按钮不会做任何事情。只要堆栈中有更多屏幕,预期结果就是继续回归。有什么遗漏?
componentWillMount() {
BackHandler.addEventListener('hardwareBackPress', () => {
this.props.navigation.goBack();
return true;
});
}
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress')
}
答案 0 :(得分:9)
经过一些试验和错误后,此代码按预期工作。我相信我的初始代码实际上并没有删除事件监听器。
componentWillMount() {
BackHandler.addEventListener('hardwareBackPress', this.backPressed);
}
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress', this.backPressed);
}
backPressed = () => {
this.props.navigation.goBack();
return true;
}