我有一个功能性的React组件,最初通过props加载了一个gltf模型-这个路径是通过props传递的-这个能正常工作。
但是,如果props发生变化,组件会重新渲染-我已经检查过了-路径已更改,应该加载新的模型,但实际上没有加载。
如何做到这一点? 我想在状态更新时交换/替换正在渲染的对象。
我尝试了不同的加载器,将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>