React 异步渲染机制

react 官网渲染讲解:

https://zh-hans.react.dev/learn/render-and-commit

1. 异步状态更新

React 将状态更新标记为需要更新,但并不会立即执行。这是为了优化性能,通过批量处理状态更新和减少渲染次数来提升应用的响应速度。

2. 更新队列

当你调用 setVisible 时,React 并不会立刻更新状态并重新渲染组件。相反,React 会将状态更新放入一个队列中,并在下一个事件循环(即下一次渲染周期)中处理这些更新。

3. 影响的渲染

这意味着,在调用 setVisible 后,当前组件的渲染仍然会使用旧的状态值。在你下一次访问状态时(例如在 console.log 中或直接在组件中使用),它会反映最新的状态值,但在当前渲染周期中仍然是旧值。

csharp 复制代码
const [visible, setVisible] = useState(false);

const toggleVisibility = () => {
  setVisible(!visible); // 此时更新状态,但 visible 仍然是旧值
  console.log(visible); // 这里会输出旧值
};

4.解决方法

如果你需要在状态变化后立即执行某些操作,建议使用 useEffect 监控状态:

csharp 复制代码
useEffect(() => {
  console.log('Visible has changed:', visible); // 这里会输出更新后的值
}, [visible]);
相关推荐
AICoder码农王1 分钟前
depcruise 实战:把架构约定变成可执行的检查
前端
paopaokaka_luck1 分钟前
基于springboot3+vue3+uniapp的河南非遗数字图谱小程序(协同过滤算法、数字图谱展示、ECharts 图形化分析)
java·前端·spring boot·学习·小程序·uni-app·echarts
合橱瑰2 分钟前
Vue3 与 ElementPlus 前端常见错误修复实践
前端·vue.js
PedroQue993 分钟前
v1.4.0:新增 defineUniPage 宏声明页面配置,架构全面重构
前端·vite
晴天1611 分钟前
Node.js 中 `npm install` 命令分析-Day30
前端·npm·node.js
风之舞_yjf13 分钟前
Vue基础(35)_全局事件总线(GlobalEventBus)
前端·vue.js
独立开发之道22 分钟前
【Three.js教程】 图元速查:官方内置的立体图形
开发语言·javascript·ecmascript
程序员小八77722 分钟前
后端转全栈:前端思维转变(Vue 视角)
前端·vue.js·状态模式
RD_daoyi25 分钟前
谷歌改写了76%的标题:超60字符的,95%会被谷歌自己重写
大数据·服务器·开发语言·前端·搜索引擎·html
IMPYLH33 分钟前
HTML 的 <map> 元素
前端·html