You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中useRef是否优先级高于className与style?渲染逻辑理解是否正确?

React中useRef与className/style的执行逻辑问题

你的理解部分正确,但核心不是useRef优先级更高,而是代码执行顺序导致的结果:

具体执行流程

  • 初始渲染阶段:React会根据返回的JSX生成DOM节点,此时div会被设置className="global-container"、style={{color: "black"}},同时这个DOM节点会被赋值给comp_ref.current。
  • 初始渲染完成后:依赖为空数组的useEffect会在DOM挂载完成后执行一次回调,这里通过comp_ref.current直接修改了DOM元素的className和style属性,这会覆盖掉React之前设置的值,所以div会变成local-container和白色文字。

关键说明

这不是useRef的“优先级”问题,而是React渲染流程与DOM直接操作的执行顺序差异:

  • React在渲染时会把JSX里的属性同步到DOM上;
  • useEffect的回调是在渲染结束、DOM已经更新完毕后才触发的,此时直接操作DOM会覆盖React之前的设置;
  • 如果之后组件因为状态变化重新渲染,React会再次根据JSX里的className和style更新DOM,这时div会变回global-container和黑色文字(因为你的useEffect只执行一次)。

内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 06:06:33