2.12 useInsertionEffect在DOM更新前触发
一、useInsertionEffect
useInsertionEffect应用场景非常少,因为获取不到DOM元素,所以只在CSS-in-JS库中才会使用
执行顺序:useInsertionEffect > useLayoutEffect > useEffect
import { useEffect, useInsertionEffect, useLayoutEffect } from 'react' function App() { useEffect(() => { console.log('1') }) useLayoutEffect(() => { console.log('2') }) useInsertionEffect(() => { console.log('3') }) return ( <> <div>Default Template</div> </> ) } export default App使用方法:
import { useInsertionEffect, useRef } from 'react' function App() { const ref = useRef(null) useInsertionEffect(() => { const style = document.createElement('style') style.innerHTML = ` .box { background: red; width: 100px; height: 100px; } ` document.head.appendChild(style) }) return ( <> <div>Default Template</div> <div className="box" ref={ref}> 12345 </div> </> ) } export default App在HTML渲染之前调用该钩子函数,提前生成css,用于减少浏览器的计算量
最后更新于