繁体   English   中英

React - 登录后路由返回到所需页面

[英]React - Route return to desired page after login

我创建了一个非常简单的登录页面,但我如何实现登录后返回所选页面的方法? 我认为可能与Navigate中传递的from属性有关,但如何获取用户选择的页面和 go 到?

<Routes>
  <Route path='*' element={<NotFound />} />
  <Route exact path='/Login' element={<Login />} />
  <Route
    path='/Apontar/:data_sel'
    element={<RequireAuth><Apontar /></RequireAuth>}
  />
  ...
function RequireAuth({ children }) {
  const { status, setStatus } = useContext(AuthContext);
  let location = useLocation();

  if (status == null) {
    return <Navigate to="/Login" state={{ from: location }} replace />;
  }

  return children;
}

您可以使用 useNavigate 挂钩来实现此操作

import {useNavigate} from "react-router-dom";
const navigate=useNavigate();
if(status==null){
navigate('/login');
 }

<Navigate to="/Login" state={{ from: location }} replace />在route state中传递当前被访问的route location Login组件只是访问这个传递的state并发出重定向返回。

例子:

import { useLocation, useNavigate } from 'react-router-dom';

...

const Login = () => {
  const { state } = useLocation();
  const navigate = useNavigate();

  ...

  const loginHandler = async () => {
    try {
      await /* authentication service /*
      const { from } = state || {};
      navigate(
        from.pathname || "/", // <-- target page or home
        { replace: true }     // <-- redirect
      );
    } catch(error) {
      ...
    }
  };

  ...
};

暂无
暂无

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

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