web-dev-qa-db-fra.com

TabNavigator est-il déconseillé?

Quand je lance le simulateur avec ...

react-native run-ios

... Je vois dans le terminal un message indiquant que "TabNavigator est obsolète. Veuillez utiliser le script createBottomTabNavigator ...".

Cependant, je ne pense pas que TabNavigator soit obsolète, ni createBottomTabNavigator existe sur le Web ou dans la réalité en général. A part ça, tout va bien! Sauf que je ne peux pas exécuter mon application. Parce que j'obtiens cette erreur à l'écran rouge suggérant que quelque chose ne va pas avec React Navigation:

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

Contexte supplémentaire: ces problèmes ont commencé à apparaître après avoir éjecté une application expo, puis tenté de la reconstituer dans son état pré-éjecté en créant une nouvelle application (create-react-native-app), puis en déplaçant mon code personnalisé dans le dossier. nouvelle application, à partir d'un commit git avant l'éjection. J'ai également dû mettre à jour le client Expo dans le simulateur. Je ne sais pas s'il s'agit d'informations pertinentes, mais avant mon éjection, je n'ai pas vu ce message suggérant que TabNavigator est obsolète.

Les documents de navigation React n'indiquent pas que TabNavigator pourrait être obsolète: https://reactnavigation.org/docs/tab-based-navigation.html

Voici la sortie du terminal avec un message indiquant que TabNavigator est obsolète:

 terminal output says TabNavigator is deprecated

3
arnoldbird

TabNavigator n'est pas obsolète dans la v1 de React Navigation. Cependant, comme j'ai référencé react-navigation dans mon package.json, comme ceci ...

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

Je tirais le dernier code et, à un moment donné (probablement hier), cette référence a commencé à extraire la v2 de React Navigation plutôt que la v2, ce qui a entraîné l'étrange message "obsolète" et également l'erreur mentionnée dans ma question.

La solution a été fournie ici: https://github.com/expo/expo/issues/1596#issuecomment-378424966

0
arnoldbird

Vous avez la même erreur

Fix =

change import { TabNavigator } from 'react-navigation'

à

import { createBottomTabNavigator } from 'react-navigation'

...

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

Oui, c'est obsolète. Utilisez ce que @dazzle a dit. De plus, une erreur commune est que les débutants comme moi incluent cette variable MainNavigator dans une balise view. Ne fais pas ça. Au lieu de cela

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

fais ça

return <MainNavigator/>
0
Koushik Das

Vérifiez votre version de navigation de réaction dans votre fichier package.json. Si votre navigation de réaction est v2 ou v3, cela ne fonctionnera pas. Vous devez utiliser createBottomTabNavigator https://reactnavigation.org/docs/en/tab-navigator.html

0
Piyush Rana