Задать вопрос

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

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 как по мне здесь абсолютно идентично, прав ли я? или есть какое-то отличие?
  • Вопрос задан
  • 110 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 1
vmakhnyuk
@vmakhnyuk
Frontend developer
Функционально да - они все "запоминают" в себе значение между ререндерами.
Но, в будующем, к примеру, вам нужно будет менять значение в зависимости от другой переменной.
В случае мемоизирующих хуков, это будет сделать проще, поскольку стоит просто добавить переменную в список зависимостей + мемоизация "из коробки". А вот в случае рефа, вам нужно будет императивно и без мемоизации обрабатывать этот случай
useEffect(() => {
    ref.current = depVar;
  }, [depVar]);


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

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

Похожие вопросы
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽