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

react-three-fiber新增滚动区域报Uncaught Div is not part of the THREE namespace错误如何解决

错误产生原因

Uncaught Div is not part of the THREE namespace! Did you forget to extend? 是@react-three/fiber(R3F)框架的典型报错:<Canvas> 组件的内部作用域只识别Three.js相关对象和你主动注册扩展的组件,你在<Canvas>内部嵌套了原生HTML标签(比如<div>、<span>等)时,R3F无法识别这类DOM元素,就会抛出该错误。

从你提供的App代码看,<Canvas>内部仅引入了<Intro>和<About>两个自定义组件,说明这两个组件的内部代码直接写了原生HTML标签,没有做兼容处理。

修复方案

你要实现滚动驱动3D场景的效果,且已经在App中预定义了挂载原生内容的domContent ref,直接用@react-three/drei提供的<Html>组件处理即可,步骤如下:

  • 第一步:在Intro.js、About.js两个组件的头部引入Html组件
import { Html } from '@react-three/drei'
  • 第二步:分别修改两个组件的返回内容,把所有原生HTML内容用<Html>标签包裹,并且把你传入的domContent赋值给Html的portal属性,示例写法如下:
// Intro 组件修改示例
function Intro({ domContent }) {
  return (
    {/* 其他Three.js相关组件可以放在Html外部 */}
    <Html portal={domContent}>
      {/* 把原来写的所有div、文本等原生HTML内容放在这里 */}
      <div className="intro-content">
        <h1>页面标题</h1>
        <p>介绍内容</p>
      </div>
    </Html>
  )
}
  • (可选)如果还未安装@react-three/drei,执行安装命令即可:
npm install @react-three/drei

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:09:04