【问题标题】:There is no route defined for key auths没有为关键身份验证定义路由
【发布时间】:2020-06-13 13:34:50
【问题描述】:

我正在使用 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'); 并在我调用此方法的同一文件中进行一些更改,应用程序重新加载一切正常,则会出现另一种奇怪的行为。

【问题讨论】:

  • 声明auth 场景键似乎是一个错字。致电Actions.auth() 应该会将您引导至特定场景。另外,您是否考虑将reset 作为type 属性传递?
  • @kenmistry Action.auth() 确实有效,但在这种情况下,如果我在同一个文件中进行任何更改并保存它并且应用程序重新加载并正常工作,但通常它不起作用应用程序卡住。 have you consider passing reset as a type prop? 怎么做?抱歉问,但我对 react-native 很陌生。
  • “正常”和“应用程序卡住”是什么意思?当然。我把它作为答案分享给你测试一下。
  • @kenmistry 感谢您的回复。 “通常”意味着当应用程序在另一端运行时,我们更改了一些内容并重新加载了应用程序。 “应用程序卡住”意味着有一个启动画面,一旦应用程序运行以隐藏启动画面,就会在关键 loginSignUp 场景组件中实现代码 Login (如您在我的路由器中看到的那样),其中代码没有'由于此错误而无法到达。

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


【解决方案1】:

错误是由拼写错误引起的。您的Actionkey 值并未完全按照您在Scene 中声明的方式调用。调用 Action.auth() 应该可以按预期工作并解决错误。

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

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

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

<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>

【讨论】:

  • 在应用程序启动时它不适用于Action.auth(),如果我在调用此方法的同一个文件中进行任何更改并且 js 使其强制重新加载,它确实有效。
  • 如果我错了,请纠正我。您所说的是您正在从 loginSignUp 导航到 auth 并出现此错误。我才意识到auth 场景没有组件。你想在这里建立一个场景堆栈吗?如果可以,可以试试上面的代码吗?
  • 亲爱的@kenmistry 我已经尝试过您建议的代码,但情况相同。让我再解释一下,我的路由器中有一个密钥,上面的 auth redirect 组件是 EnsureAuthentication 在那个 js 页面中,实现了代码来检查用户是否已登录。如果已登录,那么我正在调用 Actions.app()否则Actions.auth()。应用程序启动后没有错误但屏幕卡在启动画面中
  • 另一方面,如果我调用 Actions.auth(),同样的情况屏幕卡在 Splash 上,但如果我在 EnsureAuthentication 中进行任何更改,应用程序重新加载并且代码工作下一页 key="loginSignUp" component={Login} 被调用。
猜你喜欢
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 2019-11-19
  • 2020-02-06
  • 1970-01-01
  • 2017-09-26
  • 1970-01-01
  • 2012-10-11
相关资源
最近更新 更多