没有为密钥授权定义路由

There is no route defined for key auths

我正在开发一个使用 react-native-router-flux 进行导航但出现此错误的应用程序

这是我的路由器

<Router navTransparent>
            <Lightbox>
                <Scene key="root" tintColor="#fff" style={{position: 'absolute'}} hideNavBar>
                    <Scene key="redirect" component={EnsureAuthentication}/>
                    <Scene key="auth" navBar={CustomNavBar}>
                        <Scene key="loginSignUp" component={Login} hideNavBar/>
                        <Scene key="login" component={LoginForm} title={I18n.t('loginTitle')} />
                        <Scene key="signUp" component={SignUpForm} title={I18n.t('signUpTitle')}/>
                        <Scene key="googleLogin" component={GoogleLogin}/>
                    </Scene>
                    <Drawer hideNavBar key="app" contentComponent={DrawerContent} drawerWidth={300} drawerOpenRoute="DrawerOpen" drawerCloseRoute="DrawerClose" drawerToggleRoute="DrawerToggle">
                        <Scene key="main" navBar={CustomNavBar}>
                            <Scene key="MapSearch" component={MapSearch}/>
                            <Scene key="ScanQr" hideNavBar component={ScanQr} />
                            <Scene key="searchList" hideNavBar component={SearchList}/>
                            <Scene key="editUserProfile" component={EditUserProfile} title={I18n.t('update')} />
                            <Scene key="stallDetails" hideNavBar component={StallDetails}/>
                            <Scene key="customise" hideNavBar component={Customise}/>
                            <Scene key="cart" hideNavBar component={Cart}/>
                            <Scene key="favourites" hideNavBar component={Favourites}/>
                        </Scene>
                    </Drawer>
                </Scene>
                <Scene key="overlay"/>
                <Scene key="orderOverlay" hideNavBar component={OrderOverlay}/>
                <Scene key="confirmOverlay" hideNavBar component={ConfirmOverlay}/>
                <Scene key="forgotPasswordOverlay" hideNavBar component={ForgotPasswordOverlay}/>
                <Scene key="forgotPwdSuccessOverlay" hideNavBar component={ForgotPwdSuccessOverlay}/>
            </Lightbox>
        </Router>

我打电话给Actions.reset('auths');

如果我调用 Actions.auths() 而不是 Actions.reset('auths'); 并在我调用此方法的同一个文件中进行一些更改,应用程序重新加载一切正常,则会出现另一种奇怪的行为。

错误是由打字错误引起的。您的 Actionkey 值未完全按照您的 Scene 中声明的那样调用。调用 Action.auth() 应该会按预期工作并解决错误。

我看到您正在尝试重置 Scene。您也可以通过在 Router 中将 reset 声明为道具来做到这一点。这样,导航到Scene应该每次触发reset

<Scene key="auth" navBar={CustomNavBar} type={ActionConst.RESET}>

如果您尝试为身份验证流程设置堆栈场景,您可以尝试设置堆栈以拥有 initial 道具。我在这里添加了一个代码片段用于测试:

<Stack key="auth" navBar={CustomNavBar} initial>
  <Scene key="loginSignUp" component={Login} hideNavBar/>
  <Scene key="login" component={LoginForm} title={I18n.t('loginTitle')} />
  <Scene key="signUp" component={SignUpForm} title={I18n.t('signUpTitle')}/>
  <Scene key="googleLogin" component={GoogleLogin}/>
</Stack>