Задать вопрос
miliko0022
@miliko0022
Краткие личные сведения, включая интересующую вас

Вариант использования для useLayoutEffect + useState против useMemo?

Я видел этот ответ: useMemo vs. useEffect + useState , и он хорошо его подводит useEffect, но в моем случае я хочу выполнить дорогостоящую операцию, которая изменит DOM как можно раньше. Все useMemo()равно будет рекомендовано вместо useLayoutEffect()обновления состояния? Отражает ли двойной рендеринг эффекта -> обновление состояния какое-либо повышение производительности?

useLayoutEffect() сценарий:

useLayoutEffect(() => {
    const tokens = expensiveOperationGeneratingClasses(param1)
    setTokens(tokens)
}, 
[param1])

 render (
  <>
   {
       tokens.map(token => <span className={token.id}/>)
   }
  </>
 )

useMemo сценарий:

const tokens = useMemo(() => {
     return expensiveOperationGeneratingClasses(param1)
},
[param1]

 render (
  <>
   {
       tokens.map(token => <span className={token.id}/>)
   }
  </>
 )


На самом деле я понял, что я не делаю DOM-операции, а просто генерирую имена классов перед рендерингом тегов, чтобы избежать мерцания, поэтому я думаю, что мне лучше использовать useMemo, я прав?
  • Вопрос задан
  • 247 просмотров
Подписаться 1 Средний 4 комментария
Пригласить эксперта
Ваш ответ на вопрос

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

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