13
votes

useCallback vs useMemo et quand les utiliser

Quelle est la principale différence entre useCallback et useMemo ? Et quand utiliser useCallback de React Hooks?


3 Réponses :


-1
votes

useMemo aide à empêcher le re-rendu à moins que les dépendances à une fonction aient changé tandis que useCallback aide à empêcher le re-rendu à moins qu'une fonction n'ait changé. Par exemple, lorsqu'une fonction doit être passée comme argument à une autre fonction, useCallback n'autorisera le re-rendu qu'une fois qu'une fonction différente est passée. Voici un lien vers une ressource qui pourrait aider à expliquer davantage

https://btholt.github.io/complete-intro-to-react-v5/hooks-in-depth


1 commentaires

Ce n'est pas tout à fait correct. useCallback ne vérifie pas si la fonction a changé (car elle sera déclarée sur chaque rendu et sera toujours un objet différent), et elle accepte également un tableau de dépendances, tout comme useMemo .



3
votes
const getFullName = useCallback(() => firstName + lastName, [firstName, lastName]);

0 commentaires

0
votes

useMemo et useCallback utilisent tous les deux quelque chose qui s'appelle la mémorisation, auquel vous pouvez penser comme si les hooks se souviennent de quelque chose.


Les différences:

useMemo mémorisera / se souviendra de la valeur renvoyée par la fonction que vous lui passez jusqu'à ce que les dépendances changent.

const a = () => {}
a === a // This is true

useCallback mémorisera / se souviendra de la fonction réelle que vous lui passez jusqu'à ce que les dépendances changent, ce qui vous donne quelque chose appelé égalité référentielle .

() => {} === () => {} // This is false

Égalité référentielle:

const num = 10
const result = useCallback(() => num + num, [num])
// result is now equal to () => num + num.
// result === result between renders.
const num = 10
const result = useMemo(() => num + num, [num])
// result is now equal to 20

Source: Quelle est la différence entre useMemo et useCallback?


0 commentaires