【发布时间】:2022-01-23 14:43:09
【问题描述】:
我正在从"react-router-dom" 学习如何使用useMatch()
我收到以下错误,我的网页是空白的:
Uncaught TypeError: Cannot read properties of undefined (reading 'path')
at matchPath (index.tsx:1148)
at index.tsx:481
at mountMemo (react-dom.development.js:15846)
at Object.useMemo (react-dom.development.js:16219)
at useMemo (react.development.js:1532)
at useMatch (index.tsx:481)
at About (About.js:7)
at renderWithHooks (react-dom.development.js:14985)
at mountIndeterminateComponent (react-dom.development.js:17811)
at beginWork (react-dom.development.js:19049)
我的代码在下面
import React from "react"
import { useMatch } from "react-router-dom"
import { Link, Route } from "react-router-dom"
import SinglePage from "./SinglePage"
const About = () => {
const { url, path } = useMatch()
console.log("hello usematch!", useMatch())
return (
<div>
<ul>
<li>
<Link to={`${url}/about-app`}>About App</Link>
</li>
<li>
<Link to={`${url}/about-author`}>About Author</Link>
</li>
</ul>
<Route path={`${path}/:slug`}>
<SinglePage />
</Route>
</div>
)
}
export default About
下面是index.js 文件,我们可以在其中找到关于页面:
import React from "react";
import ReactDOM from "react-dom";
//component file
import TodoContainer from "./functionBased/components/TodoContainer";
import { Route, Routes, BrowserRouter as Router } from "react-router-dom";
//stylesheet
import "./functionBased/App.css";
import About from "./pages/About";
import NotMatch from "./pages/NotMatch";
//stylesheet
// import "./App.css"
ReactDOM.render(
<React.StrictMode>
<Router>
<>
<Routes>
<Route exact path="/" element={<TodoContainer />} />
<Route path="/about" element={<About />} />
<Route path="*" element={<NotMatch />} />
</Routes>
</>
</Router>
</React.StrictMode>,
document.getElementById("root")
);
我已经尝试通过 api docs 但不清楚为什么这不起作用以及如何使页面加载。我正在尝试在调用它的上下文中返回最近的当前路由匹配。
我对反应和router apis 很陌生。
非常感谢
【问题讨论】:
-
console.log("hello usematch!", useMatch())的输出是什么? -
嗨@TarunSharma 这只是一个错误。控制台日志中没有任何内容
-
你可以试试
console.log('url: ', url);和console.log('path: ', path);,看看它打印了什么?还是在第一次调用useMatch()时发生错误? -
我尝试控制台日志
console.log('url: ', url);和console.log('path: ', path)但没有看到任何东西(我假设它与 userMatch() 的使用方式有关 -
文档链接不正确。它指向另一个库,而不是
react-router-dom
标签: javascript reactjs react-router react-router-dom