Идентичны ли эти выражения?

const countMemo = React.useMemo(() => ({current: 1}), []);
const countRef = React.useRef(1);
или
const cb = React.useCallback(someFunction, [])
const cbRef = React.useRef(someFunction);
const cbMemo = React.useMemo(() => ({current: someFunction}), []);

поведение useref и usememo и useCallback как по мне здесь абсолютно идентично, прав ли я? или есть какое-то отличие?
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
vmakhnyuk
@vmakhnyuk
Frontend developer
Функционально да - они все "запоминают" в себе значение между ререндерами.
Но, в будующем, к примеру, вам нужно будет менять значение в зависимости от другой переменной.
В случае мемоизирующих хуков, это будет сделать проще, поскольку стоит просто добавить переменную в список зависимостей + мемоизация "из коробки". А вот в случае рефа, вам нужно будет императивно и без мемоизации обрабатывать этот случай
useEffect(() => {
    ref.current = depVar;
  }, [depVar]);


Также, я думаю "дороже" создавать мемоизированую(-ое) колбек/значение нежели ref
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы