我创建了博览会推送通知。 1)当我收到通知时,我会使用navigation.push导航到detailProduct屏幕,并且在收到其他通知时也是如此。
2)我发表了这个声明
BackHandler.addEventListener ('hardwareBackPress', this.handleBackPress)
当我单击“后退”按钮时收听事件。
handleBackPress = () => {
console.log ("I clicked on the back button")
}.
我的问题是,当我导航至产品详细信息屏幕两次(例如),然后单击“后退”按钮时,回到前一个屏幕完全正常。但是handleBackPress()
函数将执行2次,即该消息将显示2次:
I clicked on the back button
I clicked on the back button
想象一下,当我浏览5或6次到屏幕上时。 情况将变得复杂。
为什么BackHandler.addEventListener
会这样做,并且每次单击后退按钮时如何运行BackHandler.addEventListener
?
答案 0 :(得分:0)
后处理程序功能配置未显示boolean return value
。
返回值应为true
,以正常结束该函数。
用法
componentDidMount() {
BackHandler.addEventListener('hardwareBackPress', this.handleBackPress);
}
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress', this.handleBackPress);
}
handleBackPress = () => {
this.props.navigation.push("you want Screen");
this.props.navigation.goBack(null); // If your SCreen in Same Stack
return true;
}