【问题标题】:React Native - Android BackHandler - How to implement this.OnMainScreen and this.goBackReact Native - Android BackHandler - 如何实现 this.OnMainScreen 和 this.goBack
【发布时间】:2017-09-16 03:38:48
【问题描述】:

我的应用程序上有启动画面,所以当我们从主页单击 android 后退按钮时,我想退出应用程序(而不是返回启动画面)。所以我想从 react-native 教程中实现这个方法。

if (!this.onMainScreen()) {
    this.goBack();
    return true;
}
return false;

有没有人可以帮助我如何实现 onMainScreen() 和 goBack() 函数? 谢谢你的帮助。

【问题讨论】:

  • 你找到答案了吗?

标签: android react-native back-button navigator


【解决方案1】:

你应该可以使用这个功能

function getCurrentRouteFromState(navigationState): NavigationRouteConfigMap {
  const route = navigationState.routes[navigationState.index];
  // dive into nested navigators
  if (route.routes) {
    return getCurrentRouteFromState(route);
  }
  return route;
}

将您的导航状态传递给它并访问结果对象上的routeName 成员:

let screenName = getCurrentRouteFromState(state).routeName 然后您可以将屏幕名称与您的主屏幕名称进行比较并决定要做什么。

【讨论】:

  • 就我而言,它看起来像const currentRouteName = router.getPathAndParamsForState(state).path.split('/').reverse()[0]
【解决方案2】:

所以,在你的主页上(我认为这是你的 Main.js)

import { BackHandler } from 'react-native';    
componentWillMount(){
BackHandler.addEventListener('hardwareBackPress', function() {
  BackHandler.exitApp();
});
}

【讨论】:

  • 通过这种方法,BackHandler.exitApp(); 的每一次回跑
  • @AmirShabani 很遗憾,有解决方案吗?
  • @AmirShabani 很遗憾,有解决方案吗?
  • @DevAS 我猜,当您导航到另一个页面时删除处理程序并在您访问此页面时再次分配处理程序。
猜你喜欢
  • 2019-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多