reactjs - 类型 '(props: RouteProps) => JSX.Element' 不可分配给类型 'PropsWithChildren'
问题描述
我正在使用带有反应的打字稿我想渲染一个组件但收到打字稿错误
类型 '(props: RouteProps) => JSX.Element' 不可分配给类型 'PropsWithChildren'。
“(props:RouteProps)=> JSX.Element”类型中缺少属性“组件”,但在“RouteProps”类型中是必需的。
import React, { ReactNode, PropsWithChildren } from "react";
import { Route, Redirect } from "react-router";
export interface RouteProps {
component: FunctionComponent;
}
interface PrivateRoutesProp {
// component: PropsWithChildren<RouteProps> // not works
// also having "noImplicitAny": true, [this was mandatory]
component: PropsWithChildren<???>; //what i have to use here,object is not working
exact: boolean;
path: string;
}
const PrivateRoute = ({ component: Component, ...rest }: PrivateRoutesProp) => (
<Route
{...rest}
render={(props) => (isLoggedIn ? <Component {...props} /> : <Redirect to="/" />)}
/>
);
export default PrivateRoute;
谁能帮我解决这个问题
解决方案
PropsWithChildren justtype PropsWithChildren<P> = P & { children?: ReactNode };
应该包括 Route 的 props 和自定义的 props。
这是我的想法:
export interface PrivateRoutesProp {
component: FunctionComponent;
exact: boolean;
path: string;
isLogin: boolean
}
const PrivateRoute = ({ component, isLogin, ...rest }: PropsWithChildren<PrivateRoutesProp & RouteProps>) => (
<Route
{...rest}
render={(props) => (isLogin ? React.createElement(component, props) : <Redirect to="/" />)}
/>
);
推荐阅读
- java - “Apache HTTP Server”中的配置“Content-Disposition 标头”
- c# - 管理谁连接到 ClickOnce 应用程序
- python - 如何从列表中更新 matplotlib 动画标题?
- javascript - 使用 Algolia places.js 库进行反向地理编码查询
- python - 在使用 Python 的 MySQL 查询中使用 %s 进行字符串格式化时出错
- javascript - 使用 javascript 显式关闭 xml 标签
- xamarin.forms - GPS开启后需要使用xamarin表单获取当前位置
- php - 使用 PHP 的 JSON 到 HTML 行
- perl - 另一种设置 DB::deep 的方法?
- android - 懒惰的 Android 依赖项。如何在 gradle 依赖解析之前构建 AARs 库