React native 为什么BackHandler.addEventListener在单击设备的“后退”按钮时会多次触发?
我创建了世博推送通知。 1) 当我收到通知时,我会使用navigation.push导航到detailProduct屏幕,当我收到其他通知时也是如此 2) 我是这样说的React native 为什么BackHandler.addEventListener在单击设备的“后退”按钮时会多次触发?,react-native,expo,React Native,Expo,我创建了世博推送通知。 1) 当我收到通知时,我会使用navigation.push导航到detailProduct屏幕,当我收到其他通知时也是如此 2) 我是这样说的 BackHandler.addEventListener ('hardwareBackPress', this.handleBackPress) 单击“后退”按钮时收听事件 handleBackPress = () => { console.log ("I clicked on the back button")
BackHandler.addEventListener ('hardwareBackPress', this.handleBackPress)
单击“后退”按钮时收听事件
handleBackPress = () => {
console.log ("I clicked on the back button")
}.
我的问题是,例如,当我导航到产品详细信息屏幕2次,然后单击“上一步”按钮时,返回到上一个屏幕是完全正常的。但是handleBackPress()
功能将执行2次,即消息将显示2次:
I clicked on the back button
I clicked on the back button
想象一下,当我浏览5到6次屏幕时。
情况将是复杂的
为什么
BackHandler.addEventListener
会这样做,我们如何在每次单击后退按钮时运行BackHandler.addEventListener
一次?BackHandler函数配置不显示布尔返回值
返回值应为true
,以正常结束函数
用法
componentDidMount(){
BackHandler.addEventListener('hardwareBackPress',this.handleBackPress);
}
组件将卸载(){
BackHandler.removeEventListener('hardwareBackPress',this.handleBackPress);
}
车把靠背压力=()=>{
这个.props.navigation.push(“你想要屏幕”);
this.props.navigation.goBack(null);//如果您的屏幕在同一堆栈中
返回true;
}
离开详细信息屏幕时是否使用removeEventListener?@Auticcat。该问题无法解决。在完成日志共享您使用的代码后,尝试在handleBackPress函数中添加return true。@Auticcat。我试过了,但无法回到上一个屏幕我做到了。是的,该函数将运行一次,但您无法返回(您无法导航到上一个屏幕)您仍在同一屏幕中,这是由以下语句引起的:return true@zakitutu转到要返回函数的屏幕。如果您在同一堆栈中,则可以使用“goback”。我的答案更新了