为什么在单击设备的后退按钮时BackHandler.addEventListener会触发多次?

时间:2019-07-08 12:31:56

标签: react-native expo

我创建了博览会推送通知。 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

1 个答案:

答案 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;
  }