最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react?路由權(quán)限動態(tài)菜單方案配置react-router-auth-plus

 更新時間:2022年08月11日 10:07:28   作者:daisY  
這篇文章主要為大家介紹了react路由權(quán)限動態(tài)菜單方案react-router-auth-plus傻瓜式配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

在 react 中做路由權(quán)限管理,一直是比較麻煩的事,不像 vue 中有進(jìn)入路由前攔截的功能。在摸魚時間擼了一個傻瓜式配置的路由權(quán)限 library (基于 react-router v6)。

react-router v6 文檔地址

react-router-auth-plus github 地址

如何使用

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. 在應(yīng)用的最外層渲染路由

這里我使用 swr 來模擬獲取當(dāng)前用戶的權(quán)限,兩秒后返回。

// 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({
    // 當(dāng)前用戶的權(quán)限,string[]
    auth: auth || [],
    routers,
    // 跳轉(zhuǎn)到?jīng)]權(quán)限的路由時,用戶自定義顯示。這里我顯示 403 頁面。
    noAuthElement: (router) => <NotAuth />,
    // 用戶權(quán)限還沒請求到時,渲染 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>
    ),
  });

這樣就完成了,是不是很傻瓜式呢?

權(quán)限說明

若當(dāng)前 home 的權(quán)限被設(shè)置為 ["auth1", "auth2", "auth3"],當(dāng)前用戶的權(quán)限只要滿足一個就會判斷為擁有此路由的權(quán)限。

動態(tài)菜單

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

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

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

以上就是react 路由權(quán)限動態(tài)菜單方案配置react-router-auth-plus的詳細(xì)內(nèi)容,更多關(guān)于react 路由權(quán)限動態(tài)菜單的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用 React hooks 實(shí)現(xiàn)類所有生命周期

    使用 React hooks 實(shí)現(xiàn)類所有生命周期

    react 自 16.8 開始,引入了 Hooks 概念,使得函數(shù)組件中也可以擁有自己的狀態(tài),并且可以模擬對應(yīng)的生命周期,這篇文章主要介紹了使用 React hooks 怎么實(shí)現(xiàn)類里面的所有生命周期,需要的朋友可以參考下
    2023-02-02
  • React中 Zustand狀態(tài)管理庫的使用詳解

    React中 Zustand狀態(tài)管理庫的使用詳解

    Zustand?是一個非常輕量、簡潔的狀態(tài)管理庫,旨在為 React 提供簡便且高效的狀態(tài)管理,相比于 Redux 或 Context API,Zustand 具有更簡潔、靈活和易于理解的優(yōu)點(diǎn),感興趣的朋友一起看看吧
    2024-12-12
  • React自定義Hook的實(shí)現(xiàn)

    React自定義Hook的實(shí)現(xiàn)

    自定義Hook是一種自定義函數(shù),它封裝了React Hook的邏輯,并通過命名約定來使其可重用,本文主要介紹了React自定義Hook的實(shí)現(xiàn),感興趣的可以了解一下
    2023-11-11
  • 簡化Cocos和Native交互利器詳解

    簡化Cocos和Native交互利器詳解

    這篇文章主要為大家介紹了簡化Cocos和Native交互利器詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • React框架快速實(shí)現(xiàn)簡易的Markdown編輯器

    React框架快速實(shí)現(xiàn)簡易的Markdown編輯器

    這篇文章主要為大家介紹了使用React框架實(shí)現(xiàn)簡易的Markdown編輯器,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • 如何使用Redux Toolkit簡化Redux

    如何使用Redux Toolkit簡化Redux

    redux-toolkit是目前redux官方推薦的編寫redux邏輯的方法,針對redux的創(chuàng)建store繁瑣、樣板代碼太多、依賴外部庫等問題進(jìn)行了優(yōu)化,官方總結(jié)了四個特點(diǎn)是簡易的/有想法的/強(qiáng)勁的/高效的,總結(jié)來看,就是更加的方便簡單了
    2022-12-12
  • 詳解使用WebPack搭建React開發(fā)環(huán)境

    詳解使用WebPack搭建React開發(fā)環(huán)境

    這篇文章主要介紹了詳解使用WebPack搭建React開發(fā)環(huán)境,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • React組件中的this的具體使用

    React組件中的this的具體使用

    這篇文章主要介紹了React組件中的this的具體使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • react中antd Upload手動上傳的示例

    react中antd Upload手動上傳的示例

    本文主要介紹了react中antd Upload手動上傳的示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • React中classnames庫使用示例

    React中classnames庫使用示例

    這篇文章主要為大家介紹了React中classnames庫使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10

最新評論

黑龙江省| 西青区| 紫云| 东乌珠穆沁旗| 景宁| 双桥区| 沙洋县| 阿荣旗| 岑溪市| 双城市| 河源市| 吐鲁番市| 卫辉市| 察隅县| 平定县| 孝昌县| 济南市| 重庆市| 长春市| 潍坊市| 横峰县| 商城县| 雅安市| 鹤庆县| 景德镇市| 溆浦县| 陆丰市| 辽阳市| 海盐县| 福州市| 莱州市| 抚远县| 连云港市| 安溪县| 永善县| 中江县| 咸宁市| 偃师市| 濮阳市| 宣恩县| 都江堰市|