J'obtiens l'erreur suivante: "TypeError: Cannot read property 'styleKeeperContext' of undefined", lorsque j'essaye d'ajouter une pseudo-classe de survol à un bouton que je stylise à l'aide du plugin Radium
J'ai essayé d'exclure l'importation de Radium pour voir si la propriété Rootstyle fonctionnerait toujours et c'est le cas.Le problème se produit chaque fois que j'ajoute l'importation de Radium et exporte mon composant d'application encapsulé par la fonction Radium
Je suppose qu'il y a quelque chose que je ne fais pas correctement soit par la façon dont j'utilise la pseudo-classe de survol, soit par autre chose, je ne comprends pas le terme 'styleKeeperContext'
comment puis-je me débarrasser de cette erreur et continuer à utiliser le plugin, tout en gardant les styles adaptés à mon composant
Captures d'écran du code ci-dessous
3 Réponses :
J'ai rencontré le même problème et il a été résolu après la réduction de la version du module Radium de 0.26.0 à 0.25.2.
Problème GitHub pertinent: github.com/FormidableLabs/radium/issues/1042
Il suffit de regarder les erreurs de réaction affichées sur votre page Web. Vous trouverez quelque chose comme ceci -
425 | _this = _possibleConstructorReturn(this, _getPrototypeOf(RadiumEnhancer).apply(this, arguments)); 426 | _this.state = _this.state || {}; > 427 | _this._radiumStyleKeeper = _this.props.styleKeeperContext; | ^ 428 | _this._radiumMediaQueryListenersByQuery = _this._radiumMediaQueryListenersByQuery; 429 | _this._radiumMouseUpListener = _this._radiumMouseUpListener; 430 | _this._radiumIsMounted = true;
Maintenant, suivez ces étapes -
node_modules / radium / es / enhancer.js
ligne # 427 (selon l'extrait de code ci-dessus, pour vous, il peut être différent) //
les commentaires de style C) npm start
(pour vous assurer que nous n'utilisons plus l'ancien fichier / non mis à jour) npm start
et vous devriez voir que tout fonctionne comme prévu! Hourra !! nous l'avons résolu.
P.S. Ecrivez ci-dessous dans les commentaires si le problème n'est toujours pas résolu.
-1 Faire des changements à l'intérieur de modules tiers est généralement un signe que vous êtes trop profondément dans le terrier du lapin. Comme le suggère l'autre réponse, revenir à une version précédente ou attendre une version future qui n'a pas le bogue en question est généralement la voie à suivre. Si vous devez apporter une modification à un module, créer votre propre version au lieu de changer le module intégré permet d'éviter plus facilement de bloquer vos modifications lors de la mise à jour ultérieure des dépendances.
J'ai commencé à recevoir cette erreur lorsque j'ai ajouté this.state
à un composant:
const MyComponent extends Component { constructor(props) { // Add props argument super(props); // Pass props to super() this.state = { count: 0 }; } // etc. }
Lors de l'appel du constructeur, j'ai oublié de transmettez les accessoires du composant à super () code>
. Une erreur idiote à faire, mais l'erreur Radium a rendu difficile la détermination de la cause première.
La correction de cette façon a résolu l'erreur:
const MyComponent extends Component { constructor() { super(); // I messed up here this.state = { count: 0 }; } // etc. }