Il y a un problème de type à l'aide de React Navigation, lors de l'utilisation de stack.navigation
ou stack.group
depuis CreenatiVestackNavigator
Le problème dit Le fait que les types ne correspondent pas à jsx.element
à la fin des messages est plus spécifique: Type '{}' n'est pas attribuable pour taper 'reactNode'
Message entier:
"dependencies": { "@types/react": "^17.0.41" }
La façon de reproduire est simplement d'installer ces versions et d'exécuter le projet.
"react": "17.0.1", "react-dom": "17.0.1", "react-native": "0.64.3", "@react-navigation/bottom-tabs": "^6.3.1", "@react-navigation/native": "^6.0.10", "@react-navigation/native-stack": "^6.6.1", "typescript": "^4.6.3"
Mon application fonctionne toujours et je n'ai aucune erreur dans la console. Je ne sais pas pourquoi j'ai une ligne rouge sous Stack.Navigator. Mais quand je plane dessus, il dit que 'stack.navigator' ne peut pas être utilisé comme composant JSX.
i aussi J'ai la même erreur lors de l'utilisation de MaterialScommunityIcons
Ceci est un problème lié à la version @ Types / React
Vous devez ajouter cette résolution minimale à votre projet pour le résoudre:
'Stack.Navigator' cannot be used as a JSX component. Its element type 'ReactElement<any, any> | Component<Omit<DefaultRouterOptions<string> & { id?: string | undefined; children: ReactNode; screenListeners?: Partial<...> | ... 1 more ... | undefined; screenOptions?: NativeStackNavigationOptions | ... 1 more ... | undefined; defaultScreenOptions?: NativeStackNavigationOptions | ... 1 mo...' is not a valid JSX element. Type 'Component<Omit<DefaultRouterOptions<string> & { id?: string | undefined; children: ReactNode; screenListeners?: Partial<{ transitionStart: EventListenerCallback<NativeStackNavigationEventMap, "transitionStart">; ... 4 more ...; beforeRemove: EventListenerCallback<...>; }> | ((props: { ...; }) => Partial<...>) | unde...' is not assignable to type 'Element | ElementClass | null'. Type 'Component<Omit<DefaultRouterOptions<string> & { id?: string | undefined; children: ReactNode; screenListeners?: Partial<{ transitionStart: EventListenerCallback<NativeStackNavigationEventMap, "transitionStart">; ... 4 more ...; beforeRemove: EventListenerCallback<...>; }> | ((props: { ...; }) => Partial<...>) | unde...' is not assignable to type 'ElementClass'. The types returned by 'render()' are incompatible between these types. Type 'React.ReactNode' is not assignable to type 'import("/Users/mrcmesen/Novum/ice-app/plant-maintenance/node_modules/@types/react-native/node_modules/@types/react/index").ReactNode'. Type '{}' is not assignable to type 'ReactNode'.ts(2786)
4 Réponses :
Vous devrez corriger la version pour @ Types / React
car de nombreuses bibliothèques React ont une dépendance de dépendance sous forme @ types / react: "*",
qui prendra La dernière version du package. (Je suppose qu'ils viennent de publier la version 18)
Pour ce faire, vous pouvez l'ajouter dans votre package.json
si vous utilisez le yarn
"preinstall": "npm install --package-lock-only --ignore-scripts && npx npm-force-resolutions"
Les commentaires ne sont pas pour une discussion prolongée; Cette conversation a été Déménagé pour discuter .
La mise à niveau vers la dernière version a fonctionné pour moi.
Il résout le problème des composants Navigator mais entre en conflit avec le script de type lorsque la commande de démarrage NPM est tirée.
La réponse "Résolution" a résolu le problème.
Oui, mais avec la «résolution» du NPM ne fonctionne pas
je le corrige en mettant à jour @ types / réagir jusqu'à sa version 18.
En fait, j'utilise "@ types / react": "^ 18.0.9".
pour mettre à jour juste faire:
npm install -D @types/react
C'est une simple erreur de frappe qui peut être résolue en mettant à jour le typage React.
npm install -d @ types / react
ou
yarn add -d @ types / react
NPM Install
après cela ou?Remarque légère:
@ Types / React 17.0.41
n'a pas fonctionné pour moi, mais18.0.8
a corrigé cela pour moi.Pour moi
18.0.1
a fonctionné