0
votes

appeler usefeffect () seulement lorsque l'état augmente

J'essaie d'appeler useEffect () code> mais uniquement lorsque l'état de utilisateurs code> monte. Actuellement, la fonction est appelée n'importe quelle modification du compte, qu'il augmente ou diminue. Je sais que je décide lorsque le useeffect () code> est appelé entre crochets mais je ne sais pas comment le faire dire quelque chose dans le sens de utilisateurs ++ code>.

  const [users, setUsers] = useState('');

    useEffect(() => {
      console.log('a new user has joined');
    }, [users])


0 commentaires

3 Réponses :


3
votes

Il n'y a pas de moyen spécial de le faire. Il cherche toujours un changement, peu importe le type de changement que c'est.

Dans votre cas, vous pouvez utiliser une fonction pour stocker une réponse précédente des utilisateurs et une instruction IF pour la vérifier. Comme: xxx


0 commentaires

2
votes

Comme les autres mentionnés, vous devez stocker l'ancienne valeur des utilisateurs comptez afin de la comparer à la valeur actuelle . réact.usereef est le meilleur moyen d'y aller. Pendant que vous le faites, vous pouvez aussi bien créer un UtiliserPrevious crochet que vous pouvez réutiliser ailleurs. Voici la solution complète: xxx


0 commentaires

1
votes

Vous pouvez conserver un autre élément d'état comme celui-ci [userinCrusé, setuerincrated] code> dans votre composant qui ne change que si les utilisateurs code> code> L'état augmente. Donc, où que vous appeliez votre fonction code> setusers code>, vous cochez si utilisateurs code> augmente ou diminue. Si elle augmente, appelez setunerinCommaused code> sur userinCrused + 1 code>. Ensuite, vous pouvez passer userinCreusé code> dans votre tableau de dépendance dans useeffect code> crochet. (Cette solution provoquerait une double rendu puisque vous mettrez à jour votre état deux fois si les code> utilisateurs CODE> Pièce d'état augmente.)

  const [users, setUsers] = useState(0);
  const [userIncreased, setUserIncreased] = useState(0);

  useEffect(() => {
    console.log("a new user has joined");
  }, [userIncreased]);

  const handleButton = userNumber => {
    if (userNumber > users) {
      setUsers(userNumber);
      setUserIncreased(userIncreased + 1);
    } else if (userNumber < users) {
      setUsers(userNumber);
    }
  };
}


0 commentaires