【发布时间】:2021-07-13 05:19:52
【问题描述】:
我有一个功能性反应组件并初始加载一个 gltf 模型 - 路径通过道具 - 这工作正常。
但是如果道具改变了组件重新渲染 - 我检查了 - 路径改变了,应该加载一个新的模型 - 但我没有。
如何实现这一目标? 如果状态更新,我想交换/替换正在渲染的对象。
我尝试了不同的加载器,将 gltf 设置为一个状态,但这些都没有。我想我错过了一个基本概念。请帮忙
function Character(props) {
const spinner = useRef();
console.log(props.model, "from modelpreviewer");
const gltf = useLoader(GLTFLoader, props.model);
return gltf ? (
<primitive
ref={spinner}
object={gltf.scene}
/>
) : null;
}
角色组件是这样渲染的:
<Canvas
camera={{ position: [0, 0, 10] }}>
<ambientLight intensity={0.8} />
<spotLight intensity={0.7} position={[300, 300, 400]} />
<Suspense fallback={null}>
<Character model={props.model} />
</Suspense>
</Canvas>
【问题讨论】:
标签: javascript reactjs three.js react-three-fiber