React如何立即更新DOM
更新時間:2024年01月03日 09:15:01 作者:田本初
這篇文章主要介紹了React如何立即更新DOM問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
React立即更新DOM
正常情況下
react會等待set完畢后再進行頁面渲染,所以在set時無法拿到更新后的dom
import { useRef, useState } from "react" export default () => { const div = useRef(null) const [count, setCount] = useState(0) const btnClick = () => { setCount(count + 1) console.log(div.current.innerHTML) } return ( <> <div ref={div}>count:{count}</div> <button onClick={btnClick}>+1</button> </> ) }
但flushSync可以強制React同步刷新提供的回調(diào)中的任何更新
有點像Vue中的$nextTick
import { useRef, useState } from "react" import { flushSync } from "react-dom" export default () => { const div = useRef(null) const [count, setCount] = useState(0) const btnClick = () => { flushSync(() => { setCount(count + 1) }) console.log(div.current.innerHTML) } return ( <> <div ref={div}>count:{count}</div> <button onClick={btnClick}>+1</button> </> ) }
但是flashSync會喪失自動批處理(多次set只會重新渲染一次)
非必要情況下,不太建議使用
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
ES6 class類鏈?zhǔn)嚼^承,實例化及react super(props)原理詳解
這篇文章主要介紹了ES6 class類鏈?zhǔn)嚼^承,實例化及react super(props)原理,結(jié)合實例形式詳細分析了ES6 中class類鏈?zhǔn)嚼^承,實例化及react super(props)原理相關(guān)概念、原理、定義與使用技巧,需要的朋友可以參考下2020-02-02