Mis à jour : 2018-Dec
Nouvelle version de react-hot-loader
est sorti maintenant, lien . Hooks travaille maintenant hors de la boîte. Merci à l'auteur, theKashey.
Regardez ce modèle https://github.com/ReeganExE/react-hooks-boilerplate
- Crochets React
- React Hot Loader
- Webpack, Babel, ESLint Airbnb
Réponse précédente :
Tout d'abord, assurez-vous d'avoir installé react@next
et react-dom@next
.
Vérifiez ensuite si vous utilisez react-hot-loader
ou pas.
Dans mon cas, désactiver le chargeur à chaud et le HMR pourrait le faire fonctionner.
Voir https://github.com/gaearon/react-hot-loader/issues/1088 .
Citée :
Oui. RHL est 100% non compatible avec les crochets. Il y a juste quelques raisons derrière cela :
Les SFC sont en cours de conversion en éléments de classe. Il y a une raison - de pouvoir de pouvoir forcer la mise à jour de l'HMR, tant qu'il n'y a pas de méthode de mise à jour sur les SFC. SFC. Je cherche un autre moyen de forcer la mise à jour (comme ceci. Donc RHL tue SFC.
"hotReplacementRender". RHL essaye de faire le travail de React, et render l'ancienne et la nouvelle application, pour les fusionner. Donc, évidemment, c'est cassé maintenant.
Je vais rédiger un PR, pour atténuer les deux problèmes. Ça va marcher, mais pas aujourd'hui.
Il y a une solution plus appropriée, qui fonctionnerait API froid
Vous pouvez désactiver RHL pour tout type de personnalisation.
import { cold } from 'react-hot-loader';
cold(MyComponent);
Recherche de "useState/useEffect"
à l'intérieur du code source du composant, et le "refroidir".
Mis à jour :
Conformément à actualisé du mainteneur react-hot-loader, vous pourriez essayer react-hot-loader@next
et définissez la configuration comme ci-dessous :
import { setConfig } from 'react-hot-loader';
setConfig({
// set this flag to support SFC if patch is not landed
pureSFC: true
});
Merci à @loganfromlogan pour la mise à jour.
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.