ESLint - Le composant doit être écrit comme une fonction pure (fonction de préférence / sans état)
ESLint me donne cette erreur sur un projet react.
ESLint - Composant doit être écrite comme une fonction pure (réagir préfèrent/apatrides fonction)
Il pointe à la première ligne du composant.
export class myComponent extends React.Component {
render() {
return (
//stuff here
);
}
}
Comment puis-je me débarrasser de cette erreur?
source d'informationauteur JakeBrown777
Vous devez vous connecter pour publier un commentaire.
Deux choix.
Temporairement désactiver l'avertissement (non testé, il y a plusieurs façons de le faire)
Écrire comme un pur apatrides composant
La valeur de retour est utilisé comme
render
méthode d'une classe de composant:(Ou de l'utilisation non-ES6 notation si c'est votre truc.)
Pour les composants comme ça avec aucun autre logique, je préfère le rendement implicite, par exemple,
C'est une question de préférence. Je dirais que vous devriez suivre Réagir conventions de nommage, bien que, et de conserver tous les composants en commençant avec une majuscule.
Si vous avez besoin d'accessoires, ils sont transmis comme argument de la fonction:
Et vous pouvez se déstructurent dans le paramètre:
Cela peut rendre l'implicite de retour un peu plus facile si vous avez été en utilisant les vars.
Écrire votre composant comme un apatride en fonction:
Il y a en fait deux types de définition de composants à Réagir: composants Fonctionnels (qui sont juste des fonctions de accessoires à Réagir), et des composants de classe.
La principale différence entre eux est que les composants de classe peut avoir
state
et du cycle de vie des méthodes telles quecomponentDidMount
componentDidUpdate
etc.Chaque fois que vous n'avez pas besoin de l'état du cycle de vie des méthodes, vous devez écrire votre composant comme un apatride en fonction, en tant qu'apatrides composants sont en général plus facile de raisonner sur.
À écrire une composante fonctionnelle, vous écrivez une fonction qui prend un seul argument. Cet argument va recevoir le composant d'accessoires. Par conséquent, vous n'utilisez pas
this.props
pour accéder au composant de accessoires - il suffit d'utiliser la fonction de l'argument.Si tout ce que vous faites est rendu un jsx modèle, et de ne pas déclarer l'état avec
constructor(props)
ensuite, vous devez écrire votre composant comme une pure fonction des accessoires, et ne pas utiliser leclass
mot pour la définir.ex.
Vous obtiendrez cette erreur uniquement lorsque votre classe n'a pas de cycle de vie de méthode ou d'un constructeur.
Pour résoudre cela, vous devez désactiver la fibre de biens ou d'en faire une fonction pure ou créer constructeur de la classe.
Et dans app.js fichier il suffit d'importer ce composant, comme nous le faisons pour la classe comme
et de l'appeler comme
Il va travailler pour vous.
Si vous comptez sur
props
alors il y a de mieux (un peu défendable, de cette écriture) moyen de corriger cette erreur sans écrire Apatrides fonctions - par la rédaction d'un PureComponent et à l'aide de cette eslint règle [source]:Avec la règle ci-dessus, le fragment de code suivant est valide (car il dépend de
props
)Réagir équipe de plans pour la construction d'optimisations autour de SFC, mais ils ne sont pas encore là. Jusqu'à ce qu'il se passe,
SFCs
n'offre plus d'avantages que laPureComponents
. En fait, ils seront légèrement plus mauvais qu'ils ne seront pas éviter le gaspillage rend.