当前位置: 首页 > article >正文

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同步刷新提供的回调中的任何更新,有点像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只会重新渲染一次),非必要情况下,不太建议使用。


http://www.kler.cn/a/160693.html

相关文章:

  • WLAN消失或者已连接但是访问不了互联网
  • Leecode热题100-35.搜索插入位置
  • C#发票识别、发票查验接口集成、电子发票(航空运输电子行程单)
  • GIS空间分析案例---城市公共设施配置与服务评价
  • 【嵌入式开发】单片机CAN配置详解
  • JS 实现SSE通讯和了解SSE通讯
  • 备案小技能:ICP备案(网站、app、小程序)经营性ICP备案(增值电信业务经营许可证)
  • 【PyTorch】训练过程可视化
  • c语言上机小练(有点难)
  • 【力扣】206.反转链表
  • 浅谈什么是语音芯片的白噪音支持功能:打造舒适家居与优质音频体验
  • 扔掉sql语句,用 QxOrm 让你的数据库操作从来没有这么简单过!
  • rename--统一的PRF
  • c# OpenCV 读取、显示和写入图像(二)
  • SAP ABAP 开发ALV的基本流程(ALV资料二)
  • 前端实现手机短信验证码倒计时效果
  • 【PyTorch】模型选择、欠拟合和过拟合
  • Linux命令之ps
  • QT+Unity3D 超详细(将unity3D与QT进行连接,并实现信息传递)
  • SpringSecurity6 | 默认用户生成(下)
  • Linux设置Docker自动创建Nginx容器脚本
  • IDEA如何配置Git 遇到问题的解决
  • Java 敏感信息脱敏类
  • 【开源项目】Windows串口通信组件 -- Com.Gitusme.IO.Ports.SerialPort
  • 【c语言指针详解】指针的高级应用
  • 被动式安全扫描器