Je cherchais l'implémentation de eslint-plugin-react-hooks et cela ressemble à useState
's setState
y useReducer
's dispatch
sont des références statiques qui n'ont pas besoin d'être déclarées dans le tableau des dépendances de l'interface utilisateur. useEffect
.
Cependant, cette règle ne semble pas fonctionner correctement lorsque vous écrivez une règle personnalisée qui abstrait une logique interne. Par exemple, je crée un hook personnalisé :
const useCustom = () => {
const [number, setNumber] = React.useState(0);
return [number, setNumber];
};
qui est ensuite utilisé de la manière suivante :
const [number, setNumber] = useCustom();
React.useEffect(() => {
if (something) {
setNumber(1);
}
}, [something]); // useEffect has a missing dependency: 'setNumber'
L'ajout de la dépendance au tableau ne semble pas entraîner de cycles de rendu supplémentaires. Cependant, cela soulève une autre question : Que se passe-t-il si mon hook renvoie une référence à une valeur renvoyée par la fonction useRef()
serait-il possible de l'ajouter au tableau des dépendances ?