【问题标题】:Converting StackNavigator from v4 to v5 React Native error for auth将 StackNavigator 从 v4 转换为 v5 React Native 身份验证错误
【发布时间】:2020-03-04 00:26:34
【问题描述】:

我的目标是从版本 4-5 转换 React-Native 堆栈导航器。我遇到了一些挑战,我们将不胜感激。

错误:“带有有效载荷 {"name":"Auth"} 的操作 'NAVIGATE' 未被任何导航器处理。 你有一个名为“Auth”的屏幕吗? 如果您尝试导航到嵌套导航器中的屏幕,请参阅https://reactnavigation.org/docs/nesting-navigators.html#navigating-to-a-screen-in-a-nested-navigator"

导航流程:验证用户(使用 firebase)并转到包含已经正常工作的底部选项卡导航器的组件。加载屏幕 -> 登录 -> 注册 -> 在应用程序中(作为组件)。

这个导航器在 app.jsx 文件中,这里是代码。 注意:我注释掉了 v4 堆栈导航器,它工作正常。同样,我想将其转换为最新版本 5。

import React from 'react'
// import { createAppContainer, createSwitchNavigator } from 'react-navigation'; //(v4 only)
// import { createStackNavigator } from 'react-navigation-stack'; //(v4 only)

import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
// screens imports 
import LoadingScreen from './screens/LoadingScreen';
import LoginScreen from './screens/LoginScreen';
import RegisterScreen from './screens/RegisterScreen';
import CategorySignin from './screens/CategorySignin';
import FeedScreen from './screens/FeedScreen';

// tab navigator 
import { AppTabs } from './AppTabs';

const Stack = createStackNavigator()

export default class App extends React.Component {

  render(){

    return(
      // trying to do...
      <NavigationContainer>
        <Stack.Navigator
          initialRouteName="Loading"
          navigationOptions={{header: () => null}}
        >
          <Stack.Screen
            name="Loading"
            component={LoadingScreen}
          />
          <Stack.Screen
            name="Login"
            component={LoginScreen}
          />
            <Stack.Screen
            name="Register"
            component={RegisterScreen}
          />
          <Stack.Screen
            name="Sparked"
            component={AppTabs}
          />
        </Stack.Navigator>
      </NavigationContainer>

    );
  }; }


// old stack nav for auth, directs to single component (AppTabs) once logged in v4

//navigation once logged in 
// const LoginedStack = createStackNavigator({
//   // fix here 
//   Sparked: AppTabs,
// }, 
// {
//   navigationOptions: {
//     header: null,
//   },
// }
// );

// // //auth navigation
// const AuthStack = createStackNavigator({
//   Login: LoginScreen,
//   Register: RegisterScreen,

// });

// //create navigation 
// export default createAppContainer(
//   createSwitchNavigator(
//     {
//       Loading: LoadingScreen,
//       Auth: AuthStack,
//       App: LoginedStack,

//     },
//     {
//       initialRouteName: "Loading",
//       navigationOptions: {
//         header: null,
//       },
//       defaultNavigationOptions: {
//         title: 'App'
//       }
//     }
//   )
// );

【问题讨论】:

  • 我没有看到 AuthStack,尝试创建一个

标签: javascript react-native updates react-native-ios react-native-navigation


【解决方案1】:

创建身份验证堆栈

const AuthStack = () => (
  <Stack.Screen
    name="Login"
    component={LoginScreen}
    />
  <Stack.Screen
    name="Register"
    component={RegisterScreen}
  />
)

并在您的导航容器中用作

<Stack.Screen name={"Auth"} component={AuthStack} />

【讨论】:

    猜你喜欢
    • 2018-06-19
    • 2018-03-18
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    相关资源
    最近更新 更多