[英]useParams() is an empty object in react-router-dom v6.8
我只是想在 React 中使用react-router-dom
v 6.8 从动态路由( "/articles/:articleId"
)中检索参数
"react-router-dom": "^6.8.0",
"@types/react-router-dom": "^5.3.3",
我试着按照Docs ,但我一定在这里遗漏了一些东西。
应用程序.tsx
function App() {
return (
<Router>
<Routes>
<Route path={"/articles/:articleId"} element={Article()}/>
<Route path={"/articles"} element={Articles()}/>
<Route path={"/404"} element={NotFoundPage()}/>
<Route path={"/"} element={HomePage()}/>
<Route path={"*"} element={NotFoundPage()}/>
</Routes>
</Router>
);
}
文章.tsx
import { useParams } from "react-router-dom";
import { useEffect } from "react";
const Article = () => {
const { articleId } = useParams()
const params = useParams()
useEffect(() => {
console.log('even inside useEffect', params);
}, [])
console.log("Article ", useParams(), articleId)
return (
<div>ID: {articleId}</div>
)
}
export default Article
几个问题:
react-router-dom@6
完全在 Typescript 中编写,因此不需要任何外部类型,尤其是那些来自react-router-dom@5
类型,这对于 RRDv6 来说是非常不正确的。 Route
组件的element
属性采用React.ReactNode
,又名 JSX,值。
function App() {
return (
<Router>
<Routes>
<Route path="/articles/:articleId" element={<Article />} />
<Route path="/articles" element={<Articles />} />
<Route path="/404" element={<NotFoundPage />} />
<Route path="/" element={<HomePage />} />
<Route path="*" element={<NotFoundPage />} />
</Routes>
</Router>
);
}
卸载不必要的依赖。
npm uninstall --save @types/react-router-dom
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.