小编P F*_*ter的帖子

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}/>)
   }
  </>
 )

Run Code Online (Sandbox Code Playgroud)

useMemo 场景:

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

 render (
  <>
   {
       tokens.map(token => <span className={token.id}/>)
   }
  </>
 )
Run Code Online (Sandbox Code Playgroud)

实际上,我意识到我不是在进行DOM操作,而是在呈现<span>标记之前生成类名以避免闪烁,所以我认为我最好使用useMemo,对吗?

reactjs react-hooks

6
推荐指数
1
解决办法
401
查看次数

标签 统计

react-hooks ×1

reactjs ×1