簡體   English   中英

React - React 路由器 dom

[英]React - React router dom

今天我使用 React 和 react-router-dom。 我想使用自己的 class 創建自己的“路線”,但在呈現頁面之前我不知道如何獲取 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 文檔,“渲染道具 function 可以訪問與組件渲染道具相同的所有路由道具(匹配、位置和歷史記錄)。”

這意味着對於您在Router組件的render方法中的示例,您應該可以通過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"/>
        }}/>
    )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM