React18+TypeScript搭建通用中后臺項目實戰02 整合 antd 和 axios

配置路徑別名

tsconfig.json

{"compilerOptions": {"target": "ES2020","useDefineForClassFields": true,"lib": ["ES2020","DOM","DOM.Iterable"],"module": "ESNext","skipLibCheck": true,/* Bundler mode */"moduleResolution": "bundler","allowImportingTsExtensions": true,"resolveJsonModule": true,"isolatedModules": true,"noEmit": true,"jsx": "react-jsx",/* Linting */"strict": true,"noUnusedLocals": true,"noUnusedParameters": true,"noFallthroughCasesInSwitch": true,// 其他自定義配置"baseUrl": "./","paths": {"@/*": ["src/*"]}},"include": ["src"],"references": [{"path": "./tsconfig.node.json"}]
}

vite.config.ts

先安裝依賴:

yarn add -D @types/nod

再進行配置:

import {defineConfig} from 'vite'
import react from '@vitejs/plugin-react-swc'
import path from "path"// https://vitejs.dev/config/
export default defineConfig({plugins: [react()],server: {host: "127.0.0.1",port: 5173,proxy: {"/api": "http://127.0.0.1:8888",}},resolve: {alias: {"@": path.resolve(__dirname, "./src")}}
})

整合 antd

安裝依賴

yarn add antd

優化404錯誤頁面

修改 src/page/Error404.tsx

import {Button, Result} from "antd";
import {useNavigate} from "react-router-dom";function Error404() {const navigate = useNavigate()const handleClick = () => {navigate("/")}return (<Resultstatus={404}title="404"subTitle="抱歉,您訪問的頁面不存在"extra={<Button type="primary" onClick={handleClick}>返回首頁</Button>}/>)
}export default Error404

此時訪問:http://localhost:5173/404

優化403錯誤頁面

修改 src/page/Error403.tsx

import {Button, Result} from "antd";
import {useNavigate} from "react-router-dom";function Error403() {const navigate = useNavigate()const handleClick = () => {navigate("/")}return (<Resultstatus={403}title="403"subTitle="抱歉,您當前沒有權限訪問此頁面"extra={<Button type="primary" onClick={handleClick}>返回首頁</Button>}/>)
}export default Error403

此時訪問:http://localhost:5173/403

使用API路由

src/router/index.tsx

import {Navigate, useRoutes} from "react-router-dom";
import Index from "../page/Index.tsx";
import Login from "../page/Login.tsx";
import Error404 from "../page/Error404.tsx";
import Error403 from "../page/Error403.tsx";const routers = [{path: "/",element: <Index/>},{path: "/login",element: <Login/>},{path: "/404",element: <Error404/>},{path: "/403",element: <Error403/>},{path: "*",element: <Navigate to="/404"/>},
]export default function Router(){return useRoutes(routers)
}

src/App.tsx

import {BrowserRouter} from "react-router-dom";
import Router from "./router";function App() {return (<BrowserRouter><Router/></BrowserRouter>)
}export default App

測試

此時訪問:

  • http://localhost:5173/403
  • http://localhost:5173/404

整合 axios

安裝依賴

yarn add axios

封裝請求實例

新增 src/api/request.ts

import axios from "axios";// 創建實例
const req = axios.create({baseURL: '/api',timeout: 3000,timeoutErrorMessage: "請求超時,請稍后再試",withCredentials: true, // 跨域headers: {'Content-Type': 'application/json',}
})// GET 請求
function get(url: string, params: any) {return req.get(url, {params})
}// POST 請求
function post(url: string, data: any) {return req.post(url, data)
}// 導出
export default {req,get,post,
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17855.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17855.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17855.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

磁盤分區和掛載

磁盤分區和掛載 一、磁盤 業務層面&#xff1a;滿足一定的需求所是做的特定操作 硬盤是什么以及硬盤的作用 硬盤&#xff1a;計算器的存儲設備&#xff0c;一個或者多個磁性的盤片做成&#xff0c;可以在盤片上進行數據的讀寫 連接方式&#xff1a;內部設備&#xff0c;外…

深度揭秘:藍海創意云渲染農場的五大特色功能

在當今數字化時代&#xff0c;影視制作、效果圖設計等領域對于高質量的渲染需求日益增長。在這個背景下&#xff0c;云渲染平臺成為了行業中不可或缺的一部分&#xff0c;它為用戶提供了高效、靈活的渲染解決方案。藍海創意云渲染農場https://www.vsochina.com/cn/render藍海創…

軟件需求分析和軟件原型開發是一會事情嗎?

軟件需求分析和軟件原型開發是軟件開發過程中的兩個重要環節&#xff0c;它們各自承擔著不同的任務&#xff0c;但又緊密相連&#xff0c;共同影響著軟件項目的成功。下面將詳細解釋這兩個環節的定義、目的以及它們之間的關系。 一、軟件需求分析 定義&#xff1a;軟件需求分析…

C++學習日記 | LAB 6 static library 靜態庫

資料來源&#xff1a;南科大 余仕琪 C/C Program Design LINK&#xff1a;CPP/week06 at main ShiqiYu/CPP GitHub 一、本節內容 本節主要介紹靜態庫和動態庫。 1.1 靜態庫和動態庫的概念 靜態鏈接和靜態庫(也稱為存檔)是鏈接器將所有使用的庫函數復制到可執行文件的結果。靜…

Javascript中的定時器有哪些?他們的區別及用法是什么?

JavaScript 中有幾種常用的定時器函數,它們的區別主要在于執行方式和行為: setTimeout(callback, delay):作用:在指定的延遲時間后執行回調函數一次。用法:通常用于延遲執行某些操作。返回值:一個定時器 ID,可用于取消定時器。setInterval(callback, delay):作用:每隔指定的延…

Linux中 “權限設置修改”

目錄 一、權限 &#xff08;1&#xff09;權限三大類&#xff1a; &#xff08;2&#xff09;文件的權限&#xff1a; &#xff08;3&#xff09;目錄的權限&#xff1a; &#xff08;4&#xff09;用戶的角色&#xff1a; 二、文件的權限位 三、修改用戶權限 &#xf…

【flutter 雙端開發】

flutter 雙端開發 開發小細節替換新的logo 開發小細節 替換新的logo 替換雙端logo 尋找三方插件 android 打包流程 android 打包流程2

小程序唯品會Authorization sign

聲明 本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包內容、敏感網址、數據接口等均已做脫敏處理&#xff0c;嚴禁用于商業用途和非法用途&#xff0c;否則由此產生的一切后果均與作者無關&#xff01;wx a15018601872 本文章未…

Python---Matplotlib(2萬字總結)【從入門到掌握】

數據可視化 在完成了對數據的透視之后&#xff0c;可以將數據透視的結果通過可視化的方式呈現出來&#xff0c;簡單的說&#xff0c;就是將數據變成漂亮的圖表&#xff0c;因為人類對顏色和形狀會更加敏感&#xff0c;然后再進一步解讀數據背后隱藏的價值。在之前的文章中已經…

nacos安裝與使用

1.nacos簡介與安裝 什么是注冊中心&#xff08;服務治理&#xff09; 服務注冊&#xff1a;服務提供者provider&#xff0c;啟動的時候向注冊中心上報自己的網絡信息 服務發現&#xff1a;服務消費者consumer&#xff0c;啟動的時候向注冊中心上報自己的網絡信息&#xff0c;拉…

JavaScript style 樣式屬性操作

JavaScript 中可以使用 style 對象來操作元素的樣式屬性。style 對象是元素的一個屬性&#xff0c;通過它可以訪問和修改元素的內聯樣式屬性。 要訪問元素的樣式屬性&#xff0c;可以使用以下語法&#xff1a; element.style.property 其中&#xff0c;element 是要操作的元…

centos7防火墻入站白名單配置

firewall-cmd --set-default-zonedropfirewall-cmd --get-active-zone記錄下當前激活網卡firewall-cmd --permanent --change-interfaceens33 --zonedrop firewall-cmd --zonedrop --list-all 添加信任的源IP和開放端口 firewall-cmd --permanent --add-source192.168.254.1 -…

【OpenCV】圖形繪制與填充

介紹了繪制、填充圖像的API。也介紹了RNG類用來生成隨機數。相關API&#xff1a; line() rectangle() circle() ellipse() putText() 代碼&#xff1a; #include "iostream" #include "opencv2/opencv.hpp"using namespace std; using namespace cv…

ARM64的KASLR分析

基本概念 加載地址&#xff1a;內核解壓到物理內存上的物理起始地址 鏈接地址&#xff1a;內核編譯鏈接后的虛擬起始地址 我們的這篇 文章&#xff0c;介紹了加載地址可以是自動的&#xff0c;也可以是固定的&#xff1b;一般都是物理內存的起始地址 一個偏移 &#xff1b;…

pillow學習3

Pillow庫中&#xff0c;圖像的模式代表了圖像的顏色空間。以下是一些常見的圖像模式及其含義&#xff1a; L&#xff08;灰度圖&#xff09;&#xff1a;L模式表示圖像是灰度圖像&#xff0c;每個像素用8位表示&#xff08;范圍為0-255&#xff09;&#xff0c;0表示黑色&#…

在flutter initState 方法,觸發 setState導致循環執行

在Flutter中&#xff0c;如果你在initState中調用了一個方法&#xff0c;并且這個方法可能導致狀態更新&#xff0c;這可能會引起無限循環&#xff0c;因為每次狀態更新都會再次調用initState。 為了避免這種情況&#xff0c;你應該檢查調用的方法是否會導致狀態更新&#xff…

圖算法新書發布會圓滿成功,大咖現場都講了啥?

5月24日&#xff0c;嬴圖與機工社攜手舉辦的“《圖算法&#xff1a;行業應用與實踐》新書發布會”圓滿成功。 現場直播在線觀眾達4000人/次左右&#xff0c;點贊數量超7000&#xff0c;直至發布會尾聲&#xff0c;觀看人數仍在持續增長。 通過觀眾們的反饋&#xff0c;我們也對…

Matplotlib 實踐指南:圖形樣式、風格與標記探索

目錄 前言 第一點&#xff1a;導入模塊 第二點&#xff1a;創建二維圖 第三點&#xff1a;創建統計圖 總結 前言 Matplotlib 是一個強大的數據可視化庫&#xff0c;可用于創建各種類型的圖形。在本文中&#xff0c;我們將研究如何在 Matplotlib 中設置圖形的顏色、風格和標記…

【LeetCode算法】第88題:合并兩個有序數組

目錄 一、題目描述 二、初次解答 三、官方解法 四、總結 一、題目描述 二、初次解答 1. 思路&#xff1a;首次想到的解法&#xff1a;定義一個mn長度的輔助數組&#xff0c;從頭遍歷這兩個數組&#xff0c;誰小就放進輔助數組中并且對應往后走&#xff0c;最后使用memcpy函…

巧用java8的stream流的.collect(Collectors.toMap(arg1,arg2))

最近公司接手了一個低代碼二次開發平臺的需求&#xff0c;需要連接多張表的數據然后展示到界面上。 按照java的sql思路&#xff0c;我們直接通過left join去關聯表就行了&#xff0c;但是該低代碼平臺有對sql連表查詢有限制&#xff0c;就是有些表它是存在一個domainKey的&…