在主屏幕上单击时退出应用程序

时间:2017-12-20 04:49:44

标签: android reactjs react-native react-native-android react-native-router-flux

我正在使用react-native-router-flux进行反应原生导航。我的反应原生应用程序上有4个场景堆栈。

当应用首次在主屏幕上启动时,单击后退按钮会按预期退出应用程序。

但是当我导航到任何其他屏幕并返回主屏幕时,后退按钮似乎不再起作用。

以下是代码段:

onBackPress() {    
    if (Actions.state.index === 0) {
      return false;
    }
    Actions.pop();
    return true;
}

<Router backAndroidHandler={this.onBackPress}>
    <Scene key="root">
        <Scene key="home" initial component={HomeScreen} />    
        <Scene key="screen2" component={MainScreen} />    
        <Scene key="screen3" component={ScreenSec} />
    </Scene>
</Router>

我在我的组件中使用Actions.pop();导航到主屏幕。

当我通过导航到其他屏幕回到主屏幕时,我怎么能退出应用程序?

感谢。

1 个答案:

答案 0 :(得分:2)

如果您从作为此库的一部分的Example项目实施reducer,您可以从reducer中获取行为。

const reducerCreate = params => {

  const defaultReducer = new Reducer(params);

  return (state, action) => {
    // Open this up in your console of choice and dive into this action variable
    console.log('ACTION:', action);
    // Add some lines like this to grab the action you want
    if(action.type === 'Navigation/BACK' && state.index === 0){
      BackHandler.exitApp()
    }
    return defaultReducer(state, action);
  };
};

确保reducer绑定到路由器

<Router
  createReducer={reducerCreate}
  backAndroidHandler={this.onBackPress}
>

这不是理想的,只是在这里作为一种解决方法,直到在库中修复了错误,因此如果您将来阅读此答案,请检查以确保您确实需要使用此解决方法。

相关问题