javascript - JSX 元素类型 'ReactElement不是 JSX 元素的构造函数。类型“未定义”不可分配给类型“元素 | 空值'
问题描述
我尝试了删除node_modules/
并yarn.lock
重新安装所有内容的推荐解决方案,但没有解决。
我正在制作一个简单的路由器,它根据道具呈现孩子:
import React, { Fragment } from "react";
type RouterProps = {
currentRoute: string;
children: React.ReactNode;
};
const Router = ({ currentRoute, children }: RouterProps) => {
return React.Children.map(children, child =>
React.cloneElement(child as React.ReactElement<any>, { currentRoute })
);
};
type RouterViewProps = {
route: string;
children: any;
};
Router.View = ({ route, currentRoute, children }: RouterViewProps) => (
<div>{currentRoute === route ? <Fragment>{children}</Fragment> : null}</div>
);
export default Router;
尝试在应用程序中使用我的组件时出现错误:
import React from "react";
import Router from "./components/Router";
import Home from "./components/Home";
function App() {
return (
<div>
<Router currentRoute="home">
<Router.View route="home">
<Home />
</Router.View>
</Router>
</div>
);
}
export default App;
完整错误:
TypeScript error in /Users/gonzo/Projects/JS/filex-workshops-registration/src/App.tsx(8,7):
JSX element type 'ReactElement<any, string | ((props: any) => ReactElement<any, string | ... | (new (props: any) => Component<any, any, any>)> | null) | (new (props: any) => Component<any, any
, any>)>[] | null | undefined' is not a constructor function for JSX elements.
Type 'undefined' is not assignable to type 'Element | null'. TS2605
6 | return (
7 | <div>
> 8 | <Router currentRoute="home">
| ^
9 | <Router.View route="home">
10 | <Home />
11 | </Router.View>
Router 组件在我的测试中完美运行,所以我不明白应用程序本身有什么不同。
解决方案
Router
不是 JSX 的构造函数,因为它不返回 JSX。
const Router = ({ currentRoute, children }: RouterProps) => {
return (
<>
{React.Children.map(children, child =>
React.cloneElement(child as React.ReactElement<any>, { currentRoute })
)}
</>
);
};
推荐阅读
- android - Android - 自动从 Firebase Auth 中删除非活动用户
- cython - Cython 早期导入库和 setup.py 中的 comp/link
- amazon-cognito - 有没有办法让 Katalon Studio 通过 AWS Cognito 进行身份验证?
- python - tkinter - 单选按钮未设置默认结果
- java - Apache HttpClient 5 作为 Google Cloud Storage API 中的传输选项
- php - PHP获取多维数组中特定键的特定值
- python - 使用 Docker 激活 conda 时出现 CommandNotFoundError
- java - 连接mongodb atlas时如何解决未知主机异常?
- excel - EXCEL:带有 AND 和 NOT 带有 SUMIFS 的 IF 语句
- android - ReactNative 找不到 Android SDK