所以我的问题是我想把我的定制组件添加到我的场景中。但是这些定制组件将在不同的文件中定义。所以当我定义我的定制组件时,所有的三纤维组件看起来都像Cannot find name 'planeGeometry'. Did you mean 'PlaneGeometry'?
我的应用程序是用Typescript编写的。我在Javascript的沙盒中尝试过,它工作正常。也许我没有正确设置@react-three/fiber,因为即使在组件中添加 prop 给予出错。
假设我想添加一个平面网格到我的场景中,平面网格定义在Ground.ts中,我的场景定义在Scene.ts中
Scene.ts:
import {Ground} from './Ground'
const Scene =()=>{
return (
<Canvas>
<Ground />
</Canvas>
);
};
Ground.ts
import {useTexture} from '@react-three/drei';
export const Ground = () => {
const groundUrl = "<url_here>";
const texture = useTexture(groundUrl);
return (
<mesh>
<planeGeometry args={[120, 120]} />
<meshStandardMaterial map={texture} />
</mesh>
);
};
这里的组件mesh,planeGeometry,meshStandardMaterial都给予了错误,因为找不到组件。还有什么其他的步骤,我错过了。我不是很熟悉 typescript ,所以我可能错过了一些东西。
1条答案
按热度按时间dwbf0jvd1#
对了,我意识到.ts和.tsx的区别在于.tsx既包含JSX组件,也包含函数和其他逻辑,而.ts文件只能包含包含组件的函数和逻辑,这就是为什么.tsx文件可以包含这些组件的原因,虽然这些组件由于某种原因仍然不接受props,但我可以将props作为键值对传递。