javascript - 类型“{}”缺少来自“匹配”类型的以下属性':参数、isExact、路径、url
问题描述
我正在使用反应路由器和打字稿从路由中获取 id 变量以在组件中使用,打字稿抱怨说:
类型“{}”缺少“匹配”类型的以下属性:参数、isExact、路径、url
这是我的代码(App.tsx):
<Route path='/posts/:id'>
<Post />
</Route>
Post.tsx:
import React from 'react';
import { match } from 'react-router';
interface Identifiable {
id: string
params: string,
isExact: string,
path: string,
url: string,
}
const Post = (mathedRoute: match<Identifiable>) => {
return <h1>{mathedRoute.params.id}</h1>
}
export default Post;
在此先感谢您的帮助。
解决方案
您可以使用标准方式:
import React from 'react';
import { Route, RouteComponentProps, Switch } from 'react-router-dom';
interface PostParams {
id: string;
}
function Post(props: RouteComponentProps<PostParams>) {
return <>{props.match.params.id}</>;
}
export function App() {
return (
<Switch>
<Route path='/posts/:id' component={Post}/>
</Switch>
);
}
或挂钩方式:
import React from 'react';
import { Route, Switch, useParams } from 'react-router-dom';
interface PostParams {
id: string;
}
function Post() {
const { id } = useParams<PostParams>();
return <>{id}</>;
}
export function App() {
return (
<Switch>
<Route path='/posts/:id'>
<Post/>
</Route>
</Switch>
);
}
在您的代码中,您试图将它们混合在一起。
芦苇更多关于反应路由器v5
推荐阅读
- java - 未找到 Deeplearning4j 类
- python - Tensorflow - 不正确的模型推断
- javascript - 尝试使用 React 在悬停时切换表格行的背景颜色,但没有任何反应
- python - 返回数组的最大/最小值的行或列
- ajax - 第一个 API 调用返回正确的 JSON 对象,但是我无法从中提取值
- python - python,尝试合并列表中的列表时,所有值都被破坏了
- laravel - 如何覆盖 Laravel Nova 中的删除确认模式
- android - Android使用socket.io将图像作为二进制流发送
- macos - 在 macOS 应用程序中使用 Safari 调试 JavaScriptCore
- botframework - Botbuilder,多个带有直接网络控制的网站。如何管理