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

React多组件实例下用useRef替代querySelector设置div高度报错如何解决

问题解决方法

错误原因

报错的核心是你混淆了useRef返回值的结构:useRef()返回的是一个包含current属性的普通对象,你绑定到DOM元素的引用只会存在于current字段下,你直接访问parentRef.style自然会因为parentRef.style是undefined,赋值时报错。
另外还需要补充边界判断,避免组件未挂载完成时current为null的情况,同时要确保你已经把parentRef正确绑定到对应div的ref属性上。

修正后代码

const parentRef = useRef();

useEffect(() => {
  // 先判断current是否存在,避免空值报错
  if (!parentRef.current) return;
  let collapseHeight = parentRef.current.scrollHeight   
  // 操作DOM要从current属性取节点
  parentRef.current.style.height = collapseHeight + "px" 
}, []); 

额外注意事项

  • 一定要给你的目标div绑定ref,示例如下:
    <div ref={parentRef} className="collapse-content-parent">
      {/* 你的组件内容 */}
    </div>
    
  • 如果你的组件内容是动态变化的,需要把内容的依赖项加到useEffect的依赖数组里,这样内容更新时高度会同步重新计算。

内容的提问来源于stack exchange,提问作者flinch85

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:24:01