reactjs - 对象不能用作 JSX 组件
问题描述
我从 Typescript 收到错误,即 GroundLoadTextures 不能用作 JSX 组件。我的目标是为 react-three-fiber-scene 设置一个纹理加载器组件,这样我就可以在其他组件中使用加载的纹理。
“GroundLoadTextures”不能用作 JSX 组件。它的返回类型 '{ colorMap: Texture; 置换贴图:纹理;法线贴图:纹理;粗糙度贴图:纹理;aoMap:纹理;}' 不是有效的 JSX 元素。类型'{颜色映射:纹理;置换贴图:纹理;法线贴图:纹理;粗糙度贴图:纹理;aoMap:纹理;}' 缺少类型“元素”的以下属性:类型、道具、键
import { useTexture } from "@react-three/drei";
function GroundLoadTextures() {
const [colorMap, displacementMap, normalMap, roughnessMap, aoMap] = useTexture([
'/textures/stoneFloor/color.jpg',
'/textures/stoneFloor/displacement.png',
'/textures/stoneFloor/normal.jpg',
'/textures/stoneFloor/roughness.jpg',
'/textures/stoneFloor/ao.jpg'
])
const groundTextures = {
colorMap: colorMap,
displacementMap: displacementMap,
normalMap: normalMap,
roughnessMap: roughnessMap,
aoMap: aoMap
}
return(
groundTextures
)
}
export default function LoadTextures() {
return(
<GroundLoadTextures />
)
}
解决方案
您不能从 React Component 返回 Object 。你应该总是从一个反应组件返回一个 JSX 元素。
在您的情况下,您需要一个自定义钩子。
import { useTexture } from "@react-three/drei";
function useGroundLoadTextures() {
const [colorMap, displacementMap, normalMap, roughnessMap, aoMap] = useTexture([
'/textures/stoneFloor/color.jpg',
'/textures/stoneFloor/displacement.png',
'/textures/stoneFloor/normal.jpg',
'/textures/stoneFloor/roughness.jpg',
'/textures/stoneFloor/ao.jpg'
])
const groundTextures = {
colorMap: colorMap,
displacementMap: displacementMap,
normalMap: normalMap,
roughnessMap: roughnessMap,
aoMap: aoMap
}
return groundTextures;
}
export default usegroundLoadTextures;
现在有了这个自定义钩子,您可以在其他地方导入它并使用它。
import useGroundLoadTextures from './..'
function SomeOtherComponent(){
const groundTextures = useGroundLoadTextures();
....
}
推荐阅读
- javascript - 多个请求的 axios 拦截器刷新令牌
- python - 用 Pandas Dataframe 中的 ISO 城市代码替换城市名称
- c# - C# (wpf) datagridview 数据检索
- hibernate - 否定标准
- asp.net - 当我使用 Dapper 运行 Npgsql 查询时,为什么会出现“字段 'XYZ' 的类型目前对 Npgsql 未知”
- java - spring cloud gateway中多了一个yml
- android - 是否可以开发一个带有内部数据库的颤振应用程序,将这些数据上传到外部数据库?
- javascript - Laravel 5. 2 和 DropZone 多张图片上传
- php - PHP & .htaccess - 在 URL 中隐藏文件夹
- python - 使用 xml mini dom python 获取元素文本