TabNavigator 是否已弃用?

Is TabNavigator deprecated?

当我 运行 模拟器...

react-native run-ios

...我在终端中看到一条消息“TabNavigator 已弃用。请使用 createBottomTabNavigator...”

但是,我不认为 TabNavigator 已被弃用,而且我认为 createBottomTabNavigator 通常不存在于网络上或现实中。除此之外,一切都好!除了我不能 运行 我的应用程序。因为我收到这个红屏错误提示 React Navigation 有问题:

undefined is not a function (near '...(0 , _reactNavigation.TabNavigator)...')

附加上下文:这些问题在我弹出一个 expo 应用程序然后尝试通过创建一个新应用程序 (create-react-native-app) 然后移动以将其重新构建为弹出前的状态后开始出现我的自定义代码从 git 弹出前提交到新应用程序中。我还必须在模拟器中更新 Expo 客户端。我不确定这是否是相关信息,但在我弹出之前,我没有看到这条提示 TabNavigator 已被弃用的消息。

React Navigation 文档没有表明 TabNavigator 可能会被弃用:https://reactnavigation.org/docs/tab-based-navigation.html

这是终端输出,其中包含一条指示 TabNavigator 已弃用的消息:

TabNavigator 在 React Navigation 的 v1 中没有弃用。但是,因为我在我的 package.json 中引用了 react-navigation,就像这样...

"react-navigation": "git+https://github.com/react-community/react-navigation.git",

我正在拉取最新的代码,并且在某个时候(大概是昨天)这个参考开始拉入 React Navigation 的 v2,而不是 v2,导致奇怪的 "deprecated" 消息以及中提到的错误我的问题。

这里提供了解决方案: https://github.com/expo/expo/issues/1596#issuecomment-378424966

遇到同样的错误

修正=

change import { TabNavigator } from 'react-navigation'

import { createBottomTabNavigator } from 'react-navigation'

...

const MainNavigator = createBottomTabNavigator({
  welcome: { screen: WelcomeScreen },
  auth: { screen: AuthScreen },
});

是的,它已被弃用。使用@dazzle 所说的。还有一件事被证明是一个常见的错误,那就是像我这样的新手将 MainNavigator 包含在视图标签中。不要那样做。而不是这个

return <View><MainNavigator/><View/>

这样做

return <MainNavigator/>

检查 package.json 文件中的 React 导航版本。如果您的 React 导航是 v2 或 v3,那么这将不起作用。你必须使用 createBottomTabNavigator https://reactnavigation.org/docs/en/tab-navigator.html