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])
3 Réponses :
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: p>
Comme les autres mentionnés, vous devez stocker l'ancienne valeur em> des utilisateurs comptez afin de la comparer à la valeur actuelle em>. réact.usereef code> est le meilleur moyen d'y aller. Pendant que vous le faites, vous pouvez aussi bien créer un
UtiliserPrevious code> crochet que vous pouvez réutiliser ailleurs. Voici la solution complète:
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);
}
};
}