91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

react路由權限動態菜單如何配置

發布時間:2022-08-11 11:38:29 來源:億速云 閱讀:391 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“react路由權限動態菜單如何配置”,內容詳細,步驟清晰,細節處理妥當,希望這篇“react路由權限動態菜單如何配置”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

1. 配置路由

import { AuthRouterObject } from "react-router-auth-plus";
const routers: AuthRouterObject[] = [
  { path: "/", element: <Navigate to="/home" replace /> },
  { path: "/login", element: <Login /> },
  {
    element: <Layout />,
    children: [
      { path: "/home", element: <Home />, auth: ["admin"] },
      { path: "/setting", element: <Setting /> },
      {
        path: "/application",
        element: <Application />,
        auth: ["application"],
      },
    ],
  },
  { path: "*", element: <NotFound /> },
];

2. 在應用的最外層渲染路由

這里我使用 swr 來模擬獲取當前用戶的權限,兩秒后返回。

// App.tsx
import { useAuthRouters } from "react-router-auth-plus";
const fetcher = async (url: string): Promise<string[]> =>
  await new Promise((resolve) => {
    setTimeout(() => {
      resolve(["admin"]);
    }, 2000);
  });
function App() {
  const { data: auth, isValidating } = useSWR("/api/user", fetcher, {
    revalidateOnFocus: false,
  });
  return useAuthRouters({
    // 當前用戶的權限,string[]
    auth: auth || [],
    routers,
    // 跳轉到沒權限的路由時,用戶自定義顯示。這里我顯示 403 頁面。
    noAuthElement: (router) => <NotAuth />,
    // 用戶權限還沒請求到時,渲染 loading
    render: (element) => (isValidating ? element : <Loading />),
  });
}

或你可以使用 jsx 的方式來配置

import { AuthRoute, createAuthRoutesFromChildren } from "react-router-auth-plus";
useAuthRouters({
    auth: auth || [],
    noAuthElement: (router) => <NotAuth />,
    render: (element) => (isValidating ? element : <Loading />),
    routers: createAuthRoutesFromChildren(
      <Routes>
        <AuthRoute path="/" element={<Navigate to="/home" replace />} />
        <AuthRoute path="/login" element={<Login />} />
        <AuthRoute element={<Layout />}>
          <AuthRoute path="/home" element={<Home />} auth={["admin"]} />
          <AuthRoute path="/setting" element={<Setting />} />
          <AuthRoute
            path="/application"
            element={<Application />}
            auth={["application"]}
          />
        </AuthRoute>
        <AuthRoute path="*" element={<NotFound />} />
      </Routes>
    ),
  });

權限說明

若當前 home 的權限被設置為 ["auth2", "auth3", "auth4"],當前用戶的權限只要滿足一個就會判斷為擁有此路由的權限。

動態菜單

react-router-auth-plus 會自動將 children 傳給 Layout,你不必在路由配置里傳給 Layout。如果你是 ts,將 routers 類型設置為可選即可。

useAuthMenus 會過濾掉沒有權限的路由,接下來你可以自行處理一下成你想要的數據再渲染成 antd 的 Menu 組件。

import { useAuthMenus, AuthRouterObject } from "react-router-auth-plus";
interface LayoutProps {
  routers?: AuthRouterObject;
}
const Layout:FC<LayoutProps> = ({ routers }) => {
   const menus = useAuthMenus(routers);
   ...
}

讀到這里,這篇“react路由權限動態菜單如何配置”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盐边县| 宁都县| 彭水| 邓州市| 五峰| 双柏县| 昭通市| 兴义市| 基隆市| 礼泉县| 杭州市| 凤翔县| 福清市| 班戈县| 广德县| 益阳市| 崇礼县| 栾川县| 泸州市| 福海县| 建平县| 郎溪县| 双牌县| 荔浦县| 榆林市| 新竹县| 梓潼县| 博兴县| 松原市| 新源县| 尼木县| 高密市| 民权县| 克什克腾旗| 临城县| 夏河县| 山东省| 永和县| 夏邑县| 财经| 金湖县|