React Native:重新安装屏幕时,Android后退按钮不起作用

时间:2018-08-30 15:42:08

标签: android react-native react-native-android

我使用componentDidMountcomponentDidUnmount来使android按钮正常工作。 但是,当我从另一个屏幕再次来到同一屏幕时,我在android后退按钮中放置的功能不起作用。第一次加载屏幕时,它最初可以工作,但是当我转到另一个屏幕并再次返回到该屏幕时,我放置在“后退”按钮中的功能不起作用。

当我点击下面的导航栏时。当我转到另一个屏幕时,它工作正常。.但是,当我点击导航栏并导航到另一个屏幕,然后再次回到屏幕时,该功能无济于事!!我陷入了极大的困境。特别要说明的是:我在主屏幕上,转到帖子的说明,然后返回android的主屏幕后退按钮功能。.但是当我点击导航栏时,导航到其他屏幕然后再次点击导航栏,该功能将无法使用。 –

async componentDidMount() {
     BackHandler.addEventListener('hardwareBackPress',this.handleBackButtonClick);
}    
componentWillUnmount() {
    BackHandler.removeEventListener('hardwareBackPress', this.handleBackButtonClick);
}

async handleBackButtonClick() {

Alert.alert(
    'Exit the app?',
    'Are you sure you want to exit the app?',

    [
      {text: 'Cancel', onPress: () => console.log('Cancel Pressed'), style: 'cancel'},
      {text: 'OK', onPress: () => BackHandler.exitApp()},
    ],
    { cancelable: false }
  )

}

2 个答案:

答案 0 :(得分:1)

您只需使用addListener进行导航。

赞:

componentDidMount() {

    this.props.navigation.addListener(
      'didFocus',
      payload => {
        BackHandler.addEventListener('hardwareBackPress',this.handleBackButtonClick);
      }
    );

}

关注此链接:addlistener-subscribe-to-updates-to-navigation-lifecycle

答案 1 :(得分:1)

首先,请确保当您再次返回屏幕时调用哪种方法。

Yeah, this is a known backend issue. Basically, it can take 2 minutes for the streaming buffer's cache of where tables are located to update, so the writes after a delete and recreate can end up going to the deleted table's files in that 2 minute window.

然后运行您的功能。