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

React组件传参方法及Leva控制Cube缩放时模型消失问题排查

问题:React组件传递Props后Cube消失且无报错

核心错误分析

你的Cube组件接收Props的方式不正确,导致传递的scale值被错误解析,最终使Three.js网格缩放异常。

React函数组件的第一个参数是包含所有传入属性的Props对象,而非单个属性。你之前的写法function Cube(scale)中,scale实际是整个Props对象,而非你传递的数值。将这个对象传给<mesh>的scale属性时,Three.js无法识别非数值/向量类型的输入,导致网格缩放被设置为无效值(等效于缩放至0),所以Cube看起来消失了,且无明确报错。

修复方案

修改Cube组件的Props接收方式,以下两种写法任选其一:

方式1:解构Props对象

直接从Props对象中提取scale属性:

export default function Cube({ scale }) {
    return <>
        <mesh receiveShadow position-y={ -1 } rotation-x={ -Math.PI * 0.5 } scale={ scale }>
            <boxGeometry />
            <meshStandardMaterial color="greenyellow" />
        </mesh>
    </>
}

方式2:直接使用Props对象

通过Props对象访问scale属性:

export default function Cube(props) {
    return <>
        <mesh receiveShadow position-y={ -1 } rotation-x={ -Math.PI * 0.5 } scale={ props.scale }>
            <boxGeometry />
            <meshStandardMaterial color="greenyellow" />
        </mesh>
    </>
}

验证

修改后,Experience组件中通过Leva传递的scale数值会被正确传递到Cube的<mesh>组件,网格会根据设置的scale值正常缩放,不会再消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 03:22:49