[英]React-Router + Typescript error while wrapping component with Router “No overload matches this call”
在我进行快照测试之前,我有一个工作正常的组件。 它说“你不应该在路由器之外使用链接”。 然后我用路由器包裹了组件,但它不起作用。 这是组件:
import React from "react";
import "./Body.css";
import { Link, Router } from "react-router-dom";
const Body: React.FC = () => {
return (
<div className="body">
<Router>
<Link to="/movies">
<div className=" body__item">
<p>MOVIES</p>
</div>
</Link>
<Link to="/series">
<div className=" body__item">
<p>SERIES </p>
<img src="../../../images/placeholder.png" alt="" />
</div>
</Link>
</Router>
</div>
);
};
export default Body;
我有 react-router-dom 的@types,所以这不是问题。 我还尝试包裹组件。
完整的错误也是:
没有重载匹配此调用。 Overload 1 of 2, '(props: RouterProps | Readonly): Router',给出了以下错误。 类型'{ children: Element[]; 中缺少属性'history'; }' 但在“只读”类型中是必需的。 Overload 2 of 2, '(props: RouterProps, context: any): Router',给出了以下错误。 类型'{ children: Element[]; 中缺少属性'history'; }' 但在类型 'Readonly'.ts(2769) index.d.ts(99, 5) 中是必需的:这里声明了'history'。 index.d.ts(99, 5): 'history' 在这里声明。
路由器名称是 BrowserRouter 只需按如下方式更改您的导入即可。
import { Link, BrowserRouter as Router } from "react-router-dom";
我从另一个问题中弄清楚了,我忘了添加我的测试代码,也没有提到我也在使用 Jest 进行测试。 这是解决方案代码:
import { render } from "@testing-library/react";
import NotFoundPage from "../Components/NotFoundPage/NotFoundPage";
import { BrowserRouter } from "react-router-dom";
const { container } = render(
<BrowserRouter>
<NotFoundPage />
</BrowserRouter>
// I was just rendering without wrapping it like this. so you should
// wrap your component like this while testing
);
// SnapShot Test
it("Not found page matches snapshot", () => {
expect(container).toMatchSnapshot();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.