如何在 React Router v6 中重定向?

互联网 行业动态 更新时间:2024-06-13 00:19:32

Rod*_*lva 190

我认为您应该使用不匹配路由方法。

在文档中检查这一点。

reactrouter./docs/en/v6/getting-started/tutorial#adding-a-no-match-route

import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom';

<BrowserRouter>
  <Routes>
    <Route path="/" element={<Home />} />
    <Route path="/lab" element={<Lab />} />
    <Route
        path="*"
        element={<Navigate to="/" replace />}
    />
  </Routes>
</BrowserRouter>

更新 - 2022 年 3 月 18 日

为了保持历史干净,你应该设置replaceprop. 这将避免用户单击返回后的额外重定向。感谢@Paul 这个提示。

非常感谢兄弟。你的回答救了我。整整一周我一直试图在 RRD5 中找到 render prop 的确切语法替换,最后经过几天的研究,我找到了你的答案。非常感谢&lt;3 (4认同) 最好使用`&lt;Navigate to="/" replace /&gt;`,否则会在历史记录中添加一个新条目,如果您尝试导航回来,您会再次被重定向,因此您会被卡住。 (3认同)

小智 32

我找到了另一种方法来做到这一点:

import { useNavigate } from "react-router-dom";
let navigate = useNavigate();

useEffect(() => {
   if (LoggedIn){
      return navigate("/");
   }
},[LoggedIn]);

reactrouter./docs/en/v6/getting-started/overview#navigation

小智 7

创建文件 RequireAuth.tsx

import { useLocation, Navigate } from "react-router-dom";
import { useAuth } from "../hooks/Auth";

export function RequireAuth({ children }: { children: JSX.Element }) {
  let { user } = useAuth();
  let location = useLocation();

  if (!user) {
    return <Navigate to="/" state={{ from: location }} replace />;
  } else {
    return children;
  }
}

导入需要用户私有路由器的组件:

import { Routes as Switch, Route } from "react-router-dom";

import { RequireAuth } from "./RequireAuth";
import { SignIn } from "../pages/SignIn";
import { Dashboard } from "../pages/Dashboard";

export function Routes() {
  return (
    <Switch>
      <Route path="/" element={<SignIn />} />
      <Route
        path="/dashboard"
        element={
          <RequireAuth>
            <Dashboard />
          </RequireAuth>
        }
      />
    </Switch>
  );
}

Ayu*_*nda 5

在反应的 V5 中,即。react-router-dom 我们有 Redirect 组件。但是在 React V6 中,它被更新为导航组件。

我们可以在此组件中传递替换,以避免在单击后退和前进选项时发生不必要的重定向。

下面附上使用演示:

<Route  path="/" element={user ? <Home /> : <Register />} />
<Route path="/login" element={user ? <Navigate to="/" replace /> :  <Login />}  />
<Route path = "/register" element={user ? <Navigate to="/" replace /> :  <Register />} />

更多推荐

重定向,如何在,Router,React

本文发布于:2023-04-21 09:45:42,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/hyzx/5fd7c42be68243151519f657563608da.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:重定向   如何在   Router   React

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!