最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to use createStackNavigator in React Native? - Stack Overflow

programmeradmin0浏览0评论

My current code

App.js

import React from 'react';
import AuthenticationNavigator from 'app/src/navigations/AuthenticationNavigator';

export default class App extends React.Component {
  render() {
    return <AuthenticationNavigator />;
  }
}

AuthenticationNavigator.js

import { createSwitchNavigator, createAppContainer } from 'react-navigation';
onst AuthenticationNavigator = createAppContainer(
  createSwitchNavigator(
    {
        Loading: { screen: LoadingScreen },
        Login: { screen: LoginScreen },
    },
    {
        initialRouteName: 'Loading',
    },
  ),
);
export default AuthenticationNavigator;

I changed AuthenticationNavigator.js to

import { createStackNavigator } from '@react-navigation/stack';
const AuthenticationNavigator = createStackNavigator(
  {
      Loading: { screen: LoadingScreen },
      Login: { screen: LoginScreen },
  },
  {
      initialRouteName: 'Loading',
  },
);

export default AuthenticationNavigator;

I wanna use createStackNavigator instead of using createSwitchNavigator.

I'm facing

Error: Creating a navigator doesn't take an argument. Maybe you are trying to use React Navigation 4 API with React Navigation 5?

package.json

{
  "name": "app",
  },
  "dependencies": {
    "@react-navigation/stack": "^5.2.18",
    "react-navigation-stack": "^2.1.1",
  },
  "devDependencies": {
  },
  "private": true
}

There are 2 different react-navigation-stack. Does this bring the error?

I would appreciate it if you could give me any advices :)

My current code

App.js

import React from 'react';
import AuthenticationNavigator from 'app/src/navigations/AuthenticationNavigator';

export default class App extends React.Component {
  render() {
    return <AuthenticationNavigator />;
  }
}

AuthenticationNavigator.js

import { createSwitchNavigator, createAppContainer } from 'react-navigation';
onst AuthenticationNavigator = createAppContainer(
  createSwitchNavigator(
    {
        Loading: { screen: LoadingScreen },
        Login: { screen: LoginScreen },
    },
    {
        initialRouteName: 'Loading',
    },
  ),
);
export default AuthenticationNavigator;

I changed AuthenticationNavigator.js to

import { createStackNavigator } from '@react-navigation/stack';
const AuthenticationNavigator = createStackNavigator(
  {
      Loading: { screen: LoadingScreen },
      Login: { screen: LoginScreen },
  },
  {
      initialRouteName: 'Loading',
  },
);

export default AuthenticationNavigator;

I wanna use createStackNavigator instead of using createSwitchNavigator.

I'm facing

Error: Creating a navigator doesn't take an argument. Maybe you are trying to use React Navigation 4 API with React Navigation 5?

package.json

{
  "name": "app",
  },
  "dependencies": {
    "@react-navigation/stack": "^5.2.18",
    "react-navigation-stack": "^2.1.1",
  },
  "devDependencies": {
  },
  "private": true
}

There are 2 different react-navigation-stack. Does this bring the error?

I would appreciate it if you could give me any advices :)

Share Improve this question asked May 4, 2020 at 5:35 WesWes 1212 gold badges3 silver badges10 bronze badges 2
  • Currently you have mixed up reactnavigation version 4 and version 5. Can you please specify which version you want to use ? – Kishan Bharda Commented May 4, 2020 at 5:45
  • Ok. I will add answer. – Kishan Bharda Commented May 4, 2020 at 5:46
Add a ment  | 

3 Answers 3

Reset to default 4

You have mixed up reactnavigation version 4 and version 5.

import { createSwitchNavigator, createAppContainer } from 'react-navigation';

is a part of reactnavigation version 4. And

import { createStackNavigator } from '@react-navigation/stack';

is a part of reactnavigation version 5. So If you want to use v5 then first, install reactnavigation using :

npm install @react-navigation/native

then, install rest of dependencies by following this guide. Now, install stackNavigator using mand :

npm install @react-navigation/stack

More detail is here.

Now, you can create navigation as below :

import React from 'react';
import {NavigationContainer} from '@react-navigation/native';
import {createStackNavigator} from '@react-navigation/stack';
import Loading from './containers/Loading';
import Login from './containers/Login';

const {Navigator, Screen} = createStackNavigator();

const AuthStack = () => (
  <Navigator headerMode="none">
    <Screen name="Loading" ponent={Loading} />
    <Screen name="Login" ponent={Login} />
  </Navigator>
);

const AppNavigator = () => (
  <NavigationContainer>
    <AuthStack />
  </NavigationContainer>
);

export default AuthenticationNavigator;

you shouldn't have an argument for creating stack navigator. For example:

const AuthenticationStack = createStackNavigator();

const AuthenticationStackNavigator = () => {
    return(
        <AuthenticationStack.Navigator>
            <AuthenticationStack.Screen name="login" ponent = {Login}/>
            <AuthenticationStack.Screen name="register" ponent = {Register} />
        </AuthenticationStack.Navigator>
    )
}

You are creating the navigators wrong way, in react navigation V5 you create navigators differently from V4, please go through the stack navigator documentation for more details

发布评论

评论列表(0)

  1. 暂无评论