0
votes

useEffect comme rappel pour usestate a trop de dépendances

Je réécritez un composant de classe avec des crochets de réaction (car il est plus propre) mais je suis confronté à un problème. Dans mon composant de classe, j'ai une fonction de rappel sur this.setstate ({b: "bla bla bla"}, () => {// fait une fonction avec l'état A}) , de sorte que chaque Time State X a changé, j'utiliserais la nouvelle valeur d'état en conjonction avec l'état B. Lorsque j'essaie de mettre en œuvre la même fonctionnalité avec des crochets de réaction, comme: xxx

je veux seulement que ma fonction soit exécutée Lorsque l'état a-t-il des changements - non de l'état B ... Cependant, il recommençait à tout moment l'état de l'état d'un ou de l'état B rend.

J'ai essayé uniquement d'une dépendance - A - dans le Usecallback [a] - mais le problème est alors que je reçois: réagir Crochet USCallback a une dépendance manquante: 'B'. L'inclure ou la suppression de la matrice de dépendance


2 commentaires

Avez-vous essayé useeffect (() => {...}, [a]) ou useeffect (() => {...}, [A, B]) ? Je ne sais pas exactement ce que représentent les variables. De toute façon, vous devriez coller vrai code pour éviter le problème XY.


@Merci, vous n'avez essayé que d'une dépendance - A - dans l'Usecallback [a] - mais le problème est que je reçois: réagir Hook Usecallback a une dépendance manquante: 'B'. L'inclure ou la suppression de la matrice de dépendance


3 Réponses :


2
votes

Peut-être essayez peut-être d'utiliser xxx

comme la seule dépendance et à la fin de la fonction, utilisez un commentaire comme celui-ci: xxx

que Désactiver la dépendance manquante et vous donnera le résultat que vous souhaitez. Cela fonctionne habituellement pour moi.


0 commentaires

0
votes

usestate code> vous permet d'envoyer une fonction dans ses paramètres, comme un CB, toujours ce CB doit renvoyer un nouvel état pour rendre Exemple: xxx pré>

useEffect code> ne possède aucune fonction dans ce moment, y usersallback code> n'est pas nécessaire p>

si vous Avoir une fonction HandLechanger, je peux vous donner un exemple si votre état contient des données personnelles: P>

const [person, setPerson] useState({name: '', lastName: ''})

const handleChange = (newPerson) => {
  setPerson((person) => {
    /** 'person' in this moment represent the state without changes */
    /** You can do all that you need with 'person' */
    console.log(person)
    /** */
    return (newPerson)
  })
}


0 commentaires

0
votes

useEffect est composé de deux params

effet: une fonction impérative pouvant renvoyer une fonction de nettoyage; p>

DEPS: Si présent, l'effet n'active que si les valeurs de la liste changent. p>

Obtenez ces informations sur les conseils de code Visual Studio P>

Donc, si vous souhaitez activer l'effet uniquement lorsque "A" change, vous devez mettre "A" sur DEPS. P>

useEffect(() => {}, [A]);


1 commentaires

Mais qu'en est-il: réagir Crochet USECallback a une dépendance manquante: 'B'. L'inclure ou la suppression de la matrice de dépendance