![](/img/trans.png)
[英]react-router does not navigate to desired the route after an async operation
[英]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.