当前位置: 首页 > 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/news/160693.html

相关文章:

  • 备案小技能: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语言指针详解】指针的高级应用
  • 被动式安全扫描器
  • WebGL笔记:矩阵平移的数学原理和实现
  • 内衣洗衣机和手洗哪个干净?高性价比内衣洗衣机推荐
  • 【C语言】用户空间使用非缓存内存
  • 【Flink on k8s】- 3 - Kubernetes 中的关键概念
  • composer配置国内镜像
  • MySQL:update set的坑
  • HXDSP2441-Demo板
  • 智能优化算法应用:基于卷尾猴算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 外包干了2个多月,技术明显有退步了。。。。。
  • 第十五期长江沙龙:小蜘蛛,大生态落地大坪大融城