Juste pour développer la réponse de @rista404, y compris versions dupliquées de react
(et peut-être react-dom
) produira la même erreur selon l'endroit où vous utilisez vos crochets. Voici deux exemples...
- Une dépendance externe comprend une autre version de
react
dans son dependencies
probablement par erreur, car react
devrait normalement être une dépendance des pairs. Si npm
ne dédouble pas automatiquement cette version avec votre version locale, vous pouvez voir cette erreur. C'est ce à quoi @rista404 faisait référence.
- Vous
npm link
un paquet qui comprend react
dans son devDependencies
ou dependencies
. Maintenant, pour les modules de ce paquetage, vous pouvez voir des erreurs s'ils tirent une version différente de react
de leur local node_modules
plutôt que celui du projet parent.
Ce dernier point peut être corrigé lors du regroupement avec webpack
en utilisant resolve.alias
comme ça...
resolve: {
alias: {
'react': path.resolve(__dirname, 'node_modules/react'),
'react-dom': path.resolve(__dirname, 'node_modules/react-dom')
}
}
Cela permettra de garantir react
est toujours tirée de la base de données du projet parent node_modules
répertoire.
2 votes
Cela fonctionne pour moi... aucune erreur... avez-vous mis à jour vers la 16.7 ?
0 votes
Oui, je l'ai fait. Je pense que ça a peut-être quelque chose à voir avec ma configuration, mais je ne sais pas quoi. Eventuellement, si j'utilise ce même crochet en haut du composant function App, j'obtiens la même erreur.
0 votes
Hmmm... tout ce que j'ai fait c'est npx create-react-app newhook et ensuite yarn add react@next et react-dom@next et ça a bien marché....
10 votes
Juste un FYI à tous ceux qui se retrouvent ici, vous devez mettre à jour à la fois React et ReactDOM à @next pour que les crochets fonctionnent. Si vous ne le faites pas, React va lancer l'erreur ci-dessus. Je le sais parce que je viens d'avoir ce problème et c'était ma solution.