如何在反应导航中重置

时间:2018-07-18 15:44:15

标签: reactjs react-native react-navigation

我正在使用QRCode扫描器和React Navigation构建一个应用程序。从QRScanner导航到另一个屏幕后,QRScanner仍处于活动状态。我发现,必须使用StackActions重置导航器(对吗?)。我在成功屏幕(QRScanner之后)中对此进行了尝试:

const resetAction = StackActions.reset({
    index: 3,
    actions: [NavigationActions.navigate({ routeName: 'VerificationSuccess' })],
});
this.props.navigation.dispatch(resetAction);

但是它不起作用。不幸的是,我可以找到任何教程... 这是我的导航器:

import { createStackNavigator } from 'react-navigation';

import VerificationScreen from './VerificationScreen';
import QRScanner from './QRScanner';
import ChatG from '../ChatG';
import VerificationSuccess from './VerificationSuccess';

export default createStackNavigator(
    {
        VerificationScreen: {
            screen: VerificationScreen,
        },
        QRScanner: {
            screen: QRScanner,
        },
        VerificationSuccess: {
            screen: VerificationSuccess,
        },
        ChatG: {
            screen: ChatG,
        }
    }
);

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

您可能还不熟悉SwitchNavigator。 SwitchNavigator的目的是一次只显示一个屏幕。

按如下所示使用switchStackNavigator:

$ npx jest --version
v22.4.4
$ node --version
v10.6.0

下面的完整示例

const AppStack = AppStackNavigator;
const AuthStack = AuthStackNavigator;

export default createSwitchNavigator(
  {
    AuthLoading: AuthLoadingScreen,
    App: AppStack,
    Auth: AuthStack
  },
  {
    initialRouteName: "AuthLoading"
  }
);