javascript - React - React 路由器 dom
问题描述
今天我使用 React 和 react-router-dom。我想使用自己的类创建自己的“路线”,但在呈现页面之前我不知道如何获取 id。
我的代码如下:
import React from "react"
import { Route, Redirect } from "react-router-dom"
import { useAuth } from "../contexts/AuthContext"
export default function ServerRoute({ component: Component, ...rest }) {
const { currentUser } = useAuth();
return(
<Route {...rest} render={props => {
return currentUser ? /* Do stuff */ <Component {...props}/> : <Redirect to="/auth/login"/>
}}/>
)
}
我的索引如下:
import { BrowserRouter as Router, Switch, Route} from 'react-router-dom';
import { AuthProvider } from '../contexts/AuthContext';
import ServerRoute from './ServerRoute';
const TruRouter = () => {
return(
<AuthProvider>
<Router>
<Switch>
<ServerRoute path="/server/:id" component={Component}/>
</Switch>
</Router>
</AuthProvider>
)
}
export default TruRouter;
而且我想知道如何在“ServerRoute”中获取该项目-:id,是否有可能,如果可以,请问如何?
非常感谢你,多米
解决方案
根据react-router-dom 文档,“渲染道具功能可以访问与组件渲染道具相同的所有路由道具(匹配、位置和历史记录)。”
这意味着对于组件render
方法中的示例Router
,您应该可以通过props.match.params
.
对于您的情况:
// rest of the code above
return(
<Route {...rest} render={props => {
const id = props.match.params.id // get the current route id
return currentUser ? /* Do stuff */ <Component {...props}/> : <Redirect to="/auth/login"/>
}}/>
)
推荐阅读
- excel - 预定脚本添加到 xlsx 中的新单元格
- python - 带有 Flask 的 Python 中的 Oauth2 从 API 获取 302
- loops - 跟踪算法
- python - 每次添加“ManyRelatedObject”时调用函数
- html - 不变的内容应该在 index.html 或顶级 app.vue 文件中
- python - Jupyter Notebook 图片标题
- php - 我试图在 php 中创建一个循环,吐出下面的内容
- networking - Kubernetes 设置中集群的 pod 中的 Tcpdump(在 Minikube 设置中)
- git - git 在合并冲突后立即说“没有文件需要合并”
- c++ - 在c ++中将对象设置为等于同一类的构造函数是否有效?