Je suis en train d'étudier react-hook récemment. J'ai rencontré un problème qui me rend incapable de comprendre dans le processus de la pratique.
import React, { useState, useCallback } from 'react';
const set = new Set();
function Demo() {
const [count, setCount] = useState(0);
const changeValue = useCallback(() => {
setCount(count + 1);
}, []);
set.add(count);
console.log('size: ', set.size);
return(
<div>
<p>Hello React Hook</p>
<p>{count}</p>
<button onClick={changeValue}>count++</button>
</div>
)
}
export default Demo;
// If you click the button multiple times, the output is:
// size: 1
// size: 2
// size: 2
J'ai écrit un timer en utilisant react-hook. Comme je m'y attendais, la valeur de comptage affichée est toujours 1, car je n'ai pas utilisé count comme dépendance de useCallback.
Mais ce que je n'arrive pas à comprendre c'est console.log('size: ', set.size)
seulement imprimé trois fois, pourquoi ? Chaque fois que je clique sur le bouton count++
pour que la fonction Démonstration soit réexécutée. Donc, à chaque fois que je clique sur le bouton, ne devrait-on pas console.log('size: ', set.size)
sera exécuté ? Mais en fait, il n'a été exécuté que trois fois.
Et pourquoi size
garder 2 inchangé ? Je comprends que setCount
remplacera un nouveau count
à chaque fois, donc size
ne devrait pas augmenter ?
Veuillez m'aider à répondre à mes doutes, merci beaucoup.
Vous pouvez tester mon code aquí .