實現React18加TS,解決通用后臺管理系統,實戰方案落地有效實踐經驗

隨著前端技術的不斷發展和更新,使用React 18結合TypeScript(TS)來構建通用后臺管理系統已成為一種常見的選擇。本文將介紹如何在項目中應用React 18和TS,并分享一些實戰方案的有效實踐經驗。

一、搭建React 18 + TS項目
首先,我們需要創建一個新的React 18 + TS項目。可以使用腳手架工具如Create React App或者Vite來快速搭建基礎項目結構。

使用Create React App:

npx create-react-app my-admin --template typescript
cd my-admin

使用Vite:

npm init vite@latest my-admin --template react-ts
cd my-admin

二、組件開發與類型定義
在React 18 + TS項目中,組件的開發需要注意以下幾點:

  1. 使用函數式組件:
import React from 'react';type Props = {name: string;
};const HelloWorld: React.FC<Props> = ({ name }) => {return <div>Hello, {name}!</div>;
};export default HelloWorld;

  1. 類型定義和傳遞:
import React from 'react';
import HelloWorld from './components/HelloWorld';type User = {id: number;name: string;
};const App: React.FC = () => {const user: User = {id: 1,name: 'John',};return (<div><HelloWorld name={user.name} /></div>);
};export default App;

三、路由和權限控制
在一個通用后臺管理系統中,路由和權限控制是非常重要的。我們可以使用react-router-dom庫來實現路由功能,結合TS的類型定義,可以更好地做到靜態檢查和減少潛在的錯誤。

  1. 安裝并配置路由:
npm install react-router-dom @types/react-router-dom

import React from 'react';
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import HomePage from './pages/HomePage';
import LoginPage from './pages/LoginPage';
import NotFoundPage from './pages/NotFoundPage';const App: React.FC = () => {return (<Router><Switch><Route exact path="/" component={HomePage} /><Route path="/login" component={LoginPage} /><Route component={NotFoundPage} /></Switch></Router>);
};export default App;

  1. 實現權限控制:
import React from 'react';
import { Redirect, Route, RouteProps } from 'react-router-dom';type PrivateRouteProps = {isAuthenticated: boolean;redirectPath: string;
} & RouteProps;const PrivateRoute: React.FC<PrivateRouteProps> = ({isAuthenticated,redirectPath,...rest
}) => {return isAuthenticated ? (<Route {...rest} />) : (<Redirect to={redirectPath} />);
};export default PrivateRoute;

四、狀態管理與數據請求
在React 18 + TS項目中,狀態管理一般使用Redux或者Mobx來實現。同時,數據請求可以使用axios等庫來發送HTTP請求。

  1. 安裝并配置Redux:
npm install redux react-redux @types/react-redux

  1. 創建Store:
import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './counterSlice';const store = configureStore({reducer: {counter: counterReducer,},
});export default store;

  1. 發送數據請求:
import axios from 'axios';const fetchData = async (url: string): Promise<any> => {const response = await axios.get(url);return response.data;
};

以上是一個基于React 18和TypeScript的通用后臺管理系統的實戰方案。通過合理地搭建項目結構、定義類型、實現路由和權限控制以及進行狀態管理和數據請求,我們可以高效地開發出

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

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

相關文章

12.2每日一題(1無窮型冪指函數:二倍角公式+三部曲+等價無窮小代換(只有整體的因子不為0才能先算出來))

注意&#xff1a;求極限不能想先算哪里就先算哪里&#xff0c;只有整體的因子不為0才能先算出來&#xff0c;部分不為0不可以先算

外貿老業務也棘手的一個問題

這幾天有2個老業務都被一個類同的問題纏住了。 客戶定購了三臺車&#xff0c;由于是非常規要求所以我建議收取全款或者最少收50%的定金。但是業務員為了當月業績或者為了拿到就收了客戶20% 或者30% &#xff0c;定金收到了&#xff0c;我也不好再逼著業務員去加收定金。 訂單就…

記錄 | ubuntu上安裝fzf

在 ubuntu 上采用命令行安裝 fzf 的方式行不通 指的是采用下面的方式行不通&#xff1a; sudo apt install fzf # 行不通 sudo snap install fzf --classic # 行不通正確的安裝方式是&#xff1a; ● 到 fzf 的 git 倉庫&#xff1a;https://github.com/junegunn/fzf/re…

在高數據量中如何優化MySQL的Group by語句?

在實際開發環境中&#xff0c;MySQL的GROUP BY操作的優化需要結合具體的業務場景和數據特點。以下是一些建議&#xff0c;可以幫助你在實際開發中優化GROUP BY查詢&#xff1a; 使用合適的索引&#xff1a; 確保GROUP BY和ORDER BY中的列上存在索引。這有助于加速分組和排序操作…

計算機畢業設計 基于SpringBoot的電動車租賃系統的設計與實現 Java實戰項目 附源碼+文檔+視頻講解

博主介紹&#xff1a;?從事軟件開發10年之余&#xff0c;專注于Java技術領域、Python人工智能及數據挖掘、小程序項目開發和Android項目開發等。CSDN、掘金、華為云、InfoQ、阿里云等平臺優質作者? &#x1f345;文末獲取源碼聯系&#x1f345; &#x1f447;&#x1f3fb; 精…

場景示例:有贊商城 × 微盛企微管家,助力零售企業,實現私域運營自動化

1 場景描述 在零售行業內&#xff0c;線上渠道已經是零售行業的主要銷售渠道&#xff0c;大多數零售企業都會將產品上架到有贊商城&#xff0c;并使用微盛企微管家系統進行客戶管理和服務&#xff0c;希望能對客戶畫像進行精細化管理&#xff0c;以提升銷售和服務效率。 然而&a…

2023年最新prometheus + grafana搭建和使用+gmail郵箱告警配置

一、安裝prometheus 1.1 安裝 prometheus官網下載地址 sudo -i mkdir -p /opt/prometheus #移動解壓后的文件名到/opt/,并改名prometheus mv prometheus-2.45 /opt/prometheus/ #創建一個專門的prometheus用戶&#xff1a; -M 不創建家目錄&#xff0c; -s 不讓登錄 useradd…

女士內衣市場分析:預計2028年將達到643.08億美元

內衣 (英文名:Underwear)&#xff0c;是指貼身穿的衣物。內衣有保暖及污穢的危害作用&#xff0c;有時會被視為性征。女士內衣行業生產的主要原料是各類織布或無紡布&#xff0c;成分有海綿、邊、定型紗、骨膠、肩帶等&#xff0c;布面料在內衣企業的生產成本中所占比重較大。女…

Python基礎(四、探索迷宮游戲)

Python基礎&#xff08;四、探索迷宮游戲&#xff09; 游戲介紹游戲說明 游戲介紹 在這個游戲中&#xff0c;你將扮演一個勇敢的冒險者&#xff0c;進入了一個神秘的迷宮。你的任務是探索迷宮的每個房間&#xff0c;并最終找到隱藏在其中的寶藏。 游戲通過命令行界面進行交互…

web 前端之標簽練習+知識點

目錄 實現過程&#xff1a; 結果顯示 1、HTML語法 2、注釋標簽 3、常用標簽 4、新標簽 5、特殊標簽 6、在網頁中使用視頻和音頻、圖片 7、表格標簽 8、超鏈接標簽 使用HTML語言來實現該頁面 實現過程&#xff1a; <!DOCTYPE html> <html><head>…

泡沫包裝市場分析:預計2029年將達到659億元

泡沫包裝&#xff0c;簡單地講&#xff0c;就是用數學方法對無線電測量或光學測量所獲得的彈道數據進行檢驗、整理、校正、計算&#xff0c;減小或消除數據的誤差&#xff0c;得出反映運載火箭運動軌跡的精確彈道參數。通常所說的泡沫包裝&#xff0c;主要是指由可發性聚苯乙烯…

面試操作系統八股文五問五答第二期

面試操作系統八股文五問五答第二期 作者&#xff1a;程序員小白條&#xff0c;個人博客 相信看了本文后&#xff0c;對你的面試是有一定幫助的&#xff01; ?點贊?收藏?不迷路&#xff01;? 1.怎么解決死鎖&#xff1f; 1、預防死鎖&#xff1a;通過設置一些限制條件&am…

JAVA面試題8

1.Java中的線程是什么&#xff1f; 它有什么作用&#xff1f; 答案&#xff1a;線程是程序執行流的最小單位&#xff0c;用于實現多任務并發執行。Java中的線程可以實現并發編程&#xff0c;提高程序的性能和響應性。 2.什么是Java中的同步&#xff08;Synchronization&#x…

超靜音的兩相步進電機驅動芯片GC6609,GC6610的性能分析

兩相步進電機驅動芯片GC6609&#xff0c;GC6610它們是一款超靜音的兩相步進電機驅動芯片&#xff0c;內置最大 256 細分的步進驅動模式&#xff0c; 超靜音&#xff0c;低振動。芯片可以工作在 4~36V 的寬工作電壓范圍內&#xff0c;平均工作電流可以達到 2A和2.5A &#xff0c…

大數據機器學習算法項目——基于Django/協同過濾算法的房源可視化分析推薦系統的設計與實現

大數據機器學習算法項目——基于Django/協同過濾算法的房源可視化分析推薦系統的設計與實現 技術棧&#xff1a;大數據爬蟲/機器學習學習算法/數據分析與挖掘/大數據可視化/Django框架/Mysql數據庫 本項目基于 Django框架開發的房屋可視化分析推薦系統。這個系統結合了大數據…

STM32-01-認識單片機

文章目錄 一、單片機簡介二、Cortex-M系列介紹三、初識STM32四、STM32原理圖設計五、搭建開發環境六、STM32初體驗七、MDK5使用技巧 一、單片機簡介 單片機是什么&#xff1f; 單片機&#xff1a;Single-Chip Microcomputer&#xff0c;單片微型計算機&#xff0c;是一種集成電…

python獲得曲線峰值的個數

import numpy as np from scipy.signal import find_peaks import matplotlib.pyplot as plt# 生成示例數據 x np.linspace(0, 10, 100) y np.sin(x)# 查找峰值 peaks, _ find_peaks(y)# 繪制曲線和峰值點 plt.plot(x, y) plt.plot(x[peaks], y[peaks], ro)# 顯示峰值個數 n…

Golang channle(管道)基本介紹、快速入門

channel(管道)-基本介紹 為什么需要channel&#xff1f;前面使用全局變量加鎖同步來解決goroutine的通訊&#xff0c;但不完美 1)主線程在等待所有goroutine全部完成的時間很難確定&#xff0c;我們這里設置10秒&#xff0c;僅僅是估算。 2)如果主線程休眠時間長了&#xff0c…

【計算機網絡】HTTP響應報文Cookie原理

目錄 HTTP響應報文格式 一. 狀態行 狀態碼與狀態碼描述 二. 響應頭 Cookie原理 一. 前因 二. Cookie的狀態管理 結束語 HTTP響應報文格式 HTTP響應報文分為四部分 狀態行&#xff1a;包含三部分&#xff1a;協議版本&#xff0c;狀態碼&#xff0c;狀態碼描述響應頭&a…

如何選擇LED天幕屏的型號

隨著LED屏幕技術的不斷成熟&#xff0c;其應用范圍也日益擴大&#xff0c;從傳統的墻面固定安裝&#xff0c;到落地式、租賃移動式&#xff0c;再到LED互動地磚屏和安裝在天花板上的LED天幕屏等&#xff0c;安裝方式多種多樣。那么&#xff0c;在面對如此多元化的選擇時&#x…