reactjs 在@react-three/fiber场景中添加自定义组件

gz5pxeao  于 2023-02-22  发布在  React
关注(0)|答案(1)|浏览(227)

所以我的问题是我想把我的定制组件添加到我的场景中。但是这些定制组件将在不同的文件中定义。所以当我定义我的定制组件时,所有的三纤维组件看起来都像
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 ,所以我可能错过了一些东西。

dwbf0jvd

dwbf0jvd1#

对了,我意识到.ts和.tsx的区别在于.tsx既包含JSX组件,也包含函数和其他逻辑,而.ts文件只能包含包含组件的函数和逻辑,这就是为什么.tsx文件可以包含这些组件的原因,虽然这些组件由于某种原因仍然不接受props,但我可以将props作为键值对传递。

相关问题