Lorsque je suis les instructions du site web react-navigation: https: // reactnavigation .org / docs / fr / getting-started.html .
lien natif réactif gestionnaire de gestes natif
puis modifiez MainActivity.java comme il le demande.
Ensuite, exécutez react-native run-android, et l'erreur apparaît: error React Native CLI utilise la liaison automatique pour les dépendances natives, mais les modules suivants sont liés manuellement:
react-native-gesture-handler (pour dissocier run: "react-native unlink react-native-gesture-handler") Cela se produit probablement lors de la mise à niveau de React Native de moins de 0,60 à 0,60 ou plus. À l'avenir, vous pouvez dissocier cette dépendance via "react-native unink" et elle sera automatiquement incluse dans votre application. Si une bibliothèque n'est pas compatible avec la liaison automatique, ignorez ce message et informez les responsables de la bibliothèque. ma version native de réaction: react-native-cli: 2.0.1 react-native: 0.60.0
Cependant, lorsque je suis les instructions, pour dissocier la bibliothèque use: react-native unlink react-native-gesture-handler
L'application a été créée avec succès, mais une autre erreur apparaît maintenant dans l'application: null n'est pas un objet (évaluation de 'rngesturehandlermodule.direction')
J'ai essayé de nombreuses solutions sur de nombreux sites Web, comme undefined n'est pas un objet (évaluation de 'RNGestureHandlerModule.State'
aucun d'entre eux ne travaille pour moi
4 Réponses :
AVANT 0.60.0 lors de l'exécution de react-native run-android, la commande exécutera un packager metro, avec la création de l'application Android, puis exécutera l'application qui se connecte au packager metro.
C'est pourquoi, dans le passé, nous n'exécutions qu'une seule commande "react-native run-android" pour exécuter le projet.
Mais APRÈS 0.60.0 lors de l'exécution de react-native run-android, la commande ne construira que l'application android et exécutera l'application pour se connecter au packager metro.
J'ai vu une invite de commande clignoter une fois, c'est peut-être aussi la raison pour laquelle la commande start the metro packager a mal tourné et que le packager s'est fermé d'une manière ou d'une autre.
Aussi en ce qui concerne le problème avec react-native link react-native-gesture-handler Je crois que c'est la nouvelle fonctionnalité de react-native 0.60.0 pour la liaison automatique bibliothèque, donc la liaison manuelle de la bibliothèque n'est plus nécessaire. Comme beaucoup de fournisseurs de bibliothèques peuvent avoir besoin de commencer à fournir des fonctionnalités de liaison automatique, ou peuvent être confrontés à la même erreur, pas seulement react-native-gesture-handler.
Solution temporaire jusqu'à ce que quelqu'un corrige le react-native-cli pour exécuter à nouveau le packager metro: Ouvrez 2 invite de commande au lieu de 1. Et exécutez la commande ci-dessous sur chacune des invites de commande:
react-native start react-native run-android Vous voudrez peut-être exécuter la première commande en premier et attendre qu'elle soit prête avant d'exécuter la deuxième.
Sinon, votre application pourrait s'avérer vide.
Source: je l'ai essayé moi-même en créant un nouveau projet et en exécutant la commande comme mentionné dans la question.
Avez-vous exécuté react-native run-android ou react-native run-ios?
On dirait que cela est lié à la nouvelle fonctionnalité de liaison automatique dans RN 0.60 .
Pour iOS
Pour corriger pour l'instant, ajoutez simplement le podspec suivant pour RNGesureHandler à ios / Podfile
import com.swmansion.gesturehandler.react.RNGestureHandlerPackage;
....
protected List<ReactPackage> getPackages() {
// Add additional packages you require here
// No need to add RnnPackage and MainReactPackage
return Arrays.<ReactPackage>asList(
....
new RNGestureHandlerPackage()
);
}
Ensuite dans le répertoire ios, exécutez pod install pour l'installer.
Pour Android
Chemin: android / app / src / main / java / com / projectname / MainApplication.java
pod 'RNGestureHandler', :podspec => '../node_modules/react-native-gesture-handler/RNGestureHandler.podspec'
Passez une bonne journée.
Ce que vous pouvez faire, c'est d'abord désinstaller react-native-gesture-handler.
Ensuite, supprimez le dossier IOS et Android.
Ensuite, exécutez la commande ci-dessous.
1. mise à niveau native de réaction --legacy true // pour récupérer le dossier iOS et Android.
14h installer le gestionnaire de gestes-natifs de réaction
3. lien natif de réaction
4.react-native run-android
5.react-native run-ios
Mettez également à jour votre fichier MainActivity.java, suivez le site officiel:
https://kmagiera.github.io /react-native-gesture-handler/docs/getting-started.html
Avez-vous exécuté l'installation du pod. Après la version 0.60 de react native, vous n'avez pas besoin d'exécuter le lien react-native, mais vous devez quand même exécuter la commande pod-install après avoir installé la bibliothèque à l'aide de npm / yarn. AutoLinking . Veuillez exécuter l'installation du pod, puis revérifier
Est-ce que cela répond à votre question? undefined n'est pas un objet (évaluation de 'RNGestureHandlerModule.State'