简体   繁体   English

React 私有路由未重定向到索引页面 [React-Router "5.2.0"]

[英]React private route not redirecting to index page [React-Router "5.2.0"]

I've created private route for check user logged in or not.我已经为检查用户是否登录创建了私人路线。 But it is not redirecting to index page if user logged in.Here is my code.但如果用户登录,它不会重定向到索引页面。这是我的代码。

Private route:私人路线:

import React from 'react'
import { useSelector } from 'react-redux';
import { Redirect } from 'react-router-dom';


const Privateroute = ({children}) => {
    const user = useSelector((state)=> state.user.value);
    console.log("Privateroute");
    console.log(user.email);
    return user.email == null ? children : <Redirect to="/auth/login" />
};

export default Privateroute;

My App.js looks like this我的App.js看起来像这样

import React from "react";
import ReactDOM from "react-dom";
import { HashRouter as Router, Route, Switch, Redirect } from "react-router-dom";
import AdminLayout from "layouts/Admin.js";
import AuthLayout from "layouts/Auth.js";
import { store } from "./views/examples/redux/store";
import { Provider, useDispatch , useSelector  } from 'react-redux'
import Privateroute from "views/examples/Privateroute";
import {login} from './views/examples/redux/cred'



function App() {


  return (
  <Router>
    <Switch>
      <Route path="/admin" render={(props) => <AdminLayout {...props} />} />
      <Route path="/auth" render={(props) => <AuthLayout {...props} />} />
      <Privateroute> <Redirect from="/" to="/admin/index" /> </Privateroute>
    </Switch>
  </Router>
  )
}

export default App

What I am doing wrong here?我在这里做错了什么?

You dont need to write a Redirect into Private component您不需要将重定向写入私有组件

ref this link :https://ui.dev/react-router-v5-protected-routes-authentication 参考此链接:https://ui.dev/react-router-v5-protected-routes-authentication
 App.js import React from "react"; import ReactDOM from "react-dom"; import { HashRouter as Router, Route, Switch, Redirect } from "react-router-dom"; import AdminLayout from "layouts/Admin.js"; import AuthLayout from "layouts/Auth.js"; import { store } from "./views/examples/redux/store"; import { Provider, useDispatch , useSelector } from 'react-redux' import Privateroute from "views/examples/Privateroute"; import {login} from './views/examples/redux/cred' function App() { return ( <Router> <Switch> <Route path="/admin" render={(props) => <AdminLayout {...props} />} /> <Route path="/auth" render={(props) => <AuthLayout {...props} />} /> <Privateroute> //your private components only here like profile etc... </Privateroute> </Switch> </Router> ) }

export default App导出默认应用

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM