gpt4 book ai didi

javascript - PrivateRoute 在 reactjs react-router-dom 中不起作用

转载 作者:可可西里 更新时间:2023-11-01 02:23:32 25 4
gpt4 key购买 nike

在我的 react.js 项目中集成 PrivateRoute HOC 时,我完全卡住了。

这是我的路线文件

import React, { Component } from "react";
import { Route, Redirect, Switch, BrowserRouter as Router } from 'react-router-dom';
import Dashboard from "../view/Dashboard/Dashboard";
import Login from "../view/Login/Login";
import Admin from "../view/UserManagement/Admin";
import cookie from 'react-cookies'

const PrivateRoute = ({ component, ...rest }) => {
const isAuthed = cookie.load('token')
console.log(isAuthed, 'dddddddddddddddddddd')
return (
<Route {...rest} exact
render = {(props) => (
isAuthed ? (
<div>
{React.createElement(component, props)}
</div>
) :
(
<Redirect
to={{
pathname: '/login',
state: { from: props.location }
}}
/>
)
)}
/>
)
}

class MainPanel extends Component {

render() {
return (
<div style={{ direction: direction }}>
<Router>
<Switch>
<Route path="/login" component={Login}/>
<PrivateRoute path="/" component={Dashboard} />
<PrivateRoute path="/AdminManagement" component={Admin} />
</Switch>
</Router>
</div>
)
}
}
export default withNamespaces('common') (MainPanel);

我对此完全崩溃了,但并没有摆脱那个问题。为什么我在 PrivateRoute 中的控制台不显示值

react 和 react-router-dom 版本有什么问题吗

提前致谢!!!

最佳答案

您拥有的 PrivateRoute 组件是正确的,但是您只需要重新排序您的 Routes 即可使它们正常工作。 /AdminManagement 路由应该在 / 之前,因为 Switch 呈现第一个匹配的 Route 并且 Route path 也将匹配其前缀路径

class MainPanel extends Component {

render() {
return (
<div style={{ direction: direction }}>
<Router>
<Switch>
<Route path="/login" component={Login}/>
<PrivateRoute path="/AdminManagement" component={Admin} />
<PrivateRoute path="/" component={Dashboard} />
</Switch>
</Router>
</div>
)
}
}
export default withNamespaces('common') (MainPanel);

Working demo

关于javascript - PrivateRoute 在 reactjs react-router-dom 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54594220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com