native.createnavigator 工厂不是函数
native.createnavigator factory is not a function
我打算在我的项目中设计一个抽屉导航。
I installed that by this command:
npm install @react-navigation/drawer
然后将其导入 App.js
import { createDrawerNavigator } from '@react-navigation/drawer';
import { NavigationContainer } from '@react-navigation/native';
这是我的package.json
内容:
"@react-native-community/masked-view": "^0.1.6",
"@react-navigation/drawer": "^5.0.0",
"react": "16.9.0",
"react-native": "0.61.5",
"react-native-gesture-handler": "^1.5.6",
"react-native-reanimated": "^1.7.0",
"react-native-screens": "^2.0.0-beta.1",
"react-native-view-shot": "^3.0.2",
"react-navigation": "^4.1.1",
"react-navigation-stack": "^2.1.0",
这是我的App.js
内容:
const App = () => {
const Drawer = createDrawerNavigator();
return (
<View style={styles.container}>
<NavigationContainer>
<Drawer.Navigator initialRouteName="login">
<Drawer.Screen name="login" component={Login} />
<Drawer.Screen name="second" component={SecondPage} />
</Drawer.Navigator>
</NavigationContainer>
</View>
)
};
我应该说我已经创建了 Login
和 SecondPage
组件并在名为 root.js
的文件中声明了它们
import { createAppContainer } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
import { Login, Header, SecondPage, Footer, ThirdPage } from './components/index';
const AppNavigator = createStackNavigator({
login: { screen: Login },
header: { screen: Header },
second: { screen: SecondPage },
footer: { screen: Footer },
third: { screen: ThirdPage }
}, {
initialRouteName: 'login',
headerMode: 'none',
mode: 'modal',
}, {});
export default createAppContainer(AppNavigator);
但是我遇到了一个错误(如下屏幕所示)。
我该如何解决这个问题?
index.js
export * from './login';
export * from './header';
export * from './secondpage';
export * from './footer';
export * from './thirdpage';
我不明白你现在想做什么。我想你想添加一个抽屉导航器。
你的问题是你必须使用一个容器,但你有两个,createStackNavigator 有两个参数,但你有三个。
createStackNavigator(RouteConfigs, StackNavigatorConfig);
我认为你的导航器结构应该如下所示。
Drawers.js
export default const Drawers = () => {
const Drawer = createDrawerNavigator();
return (
<Drawer.Navigator initialRouteName="login">
<Drawer.Screen name="login" component={Login} />
<Drawer.Screen name="second" component={SecondPage} />
</Drawer.Navigator>
)
};
App.js
import Drawers from "./Drawers"
...
const AppNavigator = createStackNavigator({
login: { screen: Drawers },
header: { screen: Header },
second: { screen: SecondPage },
footer: { screen: Footer },
third: { screen: ThirdPage }
}, {
initialRouteName: 'login',
headerMode: 'none',
mode: 'modal',
});
export default createAppContainer(AppNavigator)
index.js
import Login from './login';
import Header from './header';
import SecondPage from './secondpage';
import Footer from './footer';
import ThirdPage from './thirdpage';
export { Login, Header, SecondPage, Footer, ThirdPage}
或
This issue can be a compatibility issue with the version.
React-Navigation
and StackNavigator
versions must be up to date.
Index.js内容
export * from './login';
export * from './header';
export * from './secondpage';
export * from './footer';
export * from './thirdpage';
您在项目中结合了 React Navigation 4 和 React Navigation 5。无效。
React Navigation 4 个包:react-navigation
、react-navigation-stack
、react-navigation-drawer
等
React Navigation 5 个包:@react-navigation/native
、@react-navigation/stack
、@react-navigation/drawer
等
遵循官方文档并使用包的正确版本和语法https://reactnavigation.org/docs/en/getting-started.html
基本上删除 root.js
中的代码并像此处那样创建堆栈导航器 https://reactnavigation.org/docs/en/stack-navigator.html
尝试安装:
纱线添加反应导航堆栈
和依赖项:
yarn 添加 react-native-gesture-handler react-native-reanimated react-native-screens react-native-safe-area-context @react-native-community/masked-view
在你的路线中:
从 'react-navigation-stack';
导入 { createStackNavigator }
卸载@react-navigation/native 并重新安装对我有用。
npm install --save @react-navigation/native
之后re-run
npm install @react-navigation/native
对我有用。我希望它对你有用
我打算在我的项目中设计一个抽屉导航。
I installed that by this command:
npm install @react-navigation/drawer
然后将其导入 App.js
import { createDrawerNavigator } from '@react-navigation/drawer';
import { NavigationContainer } from '@react-navigation/native';
这是我的package.json
内容:
"@react-native-community/masked-view": "^0.1.6",
"@react-navigation/drawer": "^5.0.0",
"react": "16.9.0",
"react-native": "0.61.5",
"react-native-gesture-handler": "^1.5.6",
"react-native-reanimated": "^1.7.0",
"react-native-screens": "^2.0.0-beta.1",
"react-native-view-shot": "^3.0.2",
"react-navigation": "^4.1.1",
"react-navigation-stack": "^2.1.0",
这是我的App.js
内容:
const App = () => {
const Drawer = createDrawerNavigator();
return (
<View style={styles.container}>
<NavigationContainer>
<Drawer.Navigator initialRouteName="login">
<Drawer.Screen name="login" component={Login} />
<Drawer.Screen name="second" component={SecondPage} />
</Drawer.Navigator>
</NavigationContainer>
</View>
)
};
我应该说我已经创建了 Login
和 SecondPage
组件并在名为 root.js
import { createAppContainer } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
import { Login, Header, SecondPage, Footer, ThirdPage } from './components/index';
const AppNavigator = createStackNavigator({
login: { screen: Login },
header: { screen: Header },
second: { screen: SecondPage },
footer: { screen: Footer },
third: { screen: ThirdPage }
}, {
initialRouteName: 'login',
headerMode: 'none',
mode: 'modal',
}, {});
export default createAppContainer(AppNavigator);
但是我遇到了一个错误(如下屏幕所示)。
我该如何解决这个问题?
index.js
export * from './login';
export * from './header';
export * from './secondpage';
export * from './footer';
export * from './thirdpage';
我不明白你现在想做什么。我想你想添加一个抽屉导航器。
你的问题是你必须使用一个容器,但你有两个,createStackNavigator 有两个参数,但你有三个。
createStackNavigator(RouteConfigs, StackNavigatorConfig);
我认为你的导航器结构应该如下所示。
Drawers.js
export default const Drawers = () => {
const Drawer = createDrawerNavigator();
return (
<Drawer.Navigator initialRouteName="login">
<Drawer.Screen name="login" component={Login} />
<Drawer.Screen name="second" component={SecondPage} />
</Drawer.Navigator>
)
};
App.js
import Drawers from "./Drawers"
...
const AppNavigator = createStackNavigator({
login: { screen: Drawers },
header: { screen: Header },
second: { screen: SecondPage },
footer: { screen: Footer },
third: { screen: ThirdPage }
}, {
initialRouteName: 'login',
headerMode: 'none',
mode: 'modal',
});
export default createAppContainer(AppNavigator)
index.js
import Login from './login';
import Header from './header';
import SecondPage from './secondpage';
import Footer from './footer';
import ThirdPage from './thirdpage';
export { Login, Header, SecondPage, Footer, ThirdPage}
或
This issue can be a compatibility issue with the version.
React-Navigation
andStackNavigator
versions must be up to date.
Index.js内容
export * from './login';
export * from './header';
export * from './secondpage';
export * from './footer';
export * from './thirdpage';
您在项目中结合了 React Navigation 4 和 React Navigation 5。无效。
React Navigation 4 个包:react-navigation
、react-navigation-stack
、react-navigation-drawer
等
React Navigation 5 个包:@react-navigation/native
、@react-navigation/stack
、@react-navigation/drawer
等
遵循官方文档并使用包的正确版本和语法https://reactnavigation.org/docs/en/getting-started.html
基本上删除 root.js
中的代码并像此处那样创建堆栈导航器 https://reactnavigation.org/docs/en/stack-navigator.html
尝试安装: 纱线添加反应导航堆栈
和依赖项: yarn 添加 react-native-gesture-handler react-native-reanimated react-native-screens react-native-safe-area-context @react-native-community/masked-view
在你的路线中: 从 'react-navigation-stack';
导入 { createStackNavigator }卸载@react-navigation/native 并重新安装对我有用。
npm install --save @react-navigation/native
之后re-run
npm install @react-navigation/native
对我有用。我希望它对你有用