欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React18+TS通用后臺(tái)管理系統(tǒng)解決方案落地實(shí)戰(zhàn)示例

 更新時(shí)間:2023年08月20日 09:58:44   作者:乖乖的花卷_b3vdrC  
這篇文章主要為大家介紹了React18+TS通用后臺(tái)管理系統(tǒng)解決方案落地實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

React 18+TS的根本概念

TypeScript

TypeScript是一種靜態(tài)類型的編程言語(yǔ),它能夠在編譯時(shí)檢查代碼中的類型錯(cuò)誤,從而進(jìn)步代碼的可讀性和可維護(hù)性1。TypeScript還支持ES6+的新特性,如類,模塊,箭頭函數(shù),解構(gòu)賦值等,使得代碼愈加簡(jiǎn)約和現(xiàn)代化1。

TypeScript能夠與React框架無(wú)縫集成,只需求裝置相應(yīng)的類型定義文件即可。例如,要運(yùn)用React 18+TS開(kāi)發(fā)應(yīng)用,能夠執(zhí)行以下命令:

npm install --save react@next react-dom@next
npm install --save-dev typescript @types/react @types/react-dom

這樣就能夠在.ts或.tsx文件中運(yùn)用React和TypeScript了。

React 18

React 18React框架的最新版本,它包含了一些嚴(yán)重的更新和改良2。其中最引人矚目的是Server Components,它能夠讓開(kāi)發(fā)者在效勞器端渲染組件,并將結(jié)果發(fā)送給客戶端3。這樣能夠減少客戶端的代碼量和網(wǎng)絡(luò)傳輸量,進(jìn)步應(yīng)用的加載速度和響應(yīng)速度3。

另一個(gè)重要的特性是Suspense,它能夠讓開(kāi)發(fā)者在組件中聲明數(shù)據(jù)依賴,并在數(shù)據(jù)加載時(shí)顯現(xiàn)一個(gè)占位符4。這樣能夠防止組件在渲染過(guò)程中呈現(xiàn)閃爍或空白的狀況,進(jìn)步用戶體驗(yàn)4。

還有一個(gè)值得關(guān)注的特性是Concurrent Rendering,它能夠讓React在后臺(tái)渲染更新,并在適宜的機(jī)遇顯現(xiàn)給用戶5。這樣能夠防止長(zhǎng)時(shí)間的渲染任務(wù)阻塞用戶交互,進(jìn)步應(yīng)用的流利度和穩(wěn)定性5。

要運(yùn)用React 18+TS開(kāi)發(fā)應(yīng)用,需求配置一些實(shí)驗(yàn)性的特性。例如,在tsconfig.json文件中添加以下內(nèi)容:

{
  "compilerOptions": {
    "jsx": "react-jsx",
    "jsxImportSource": "react",
    "experimentalDecorators": true,
    "useDefineForClassFields": true
  }
}

這樣就能夠在.tsx文件中運(yùn)用JSX語(yǔ)法,并啟用裝飾器和類字段等特性了。

React 18+TS的優(yōu)勢(shì)

運(yùn)用React 18+TS開(kāi)發(fā)前端應(yīng)用有以下幾個(gè)優(yōu)勢(shì):

能夠應(yīng)用TypeScript的類型系統(tǒng)和ES6+的新特性,編寫愈加強(qiáng)健、簡(jiǎn)約和現(xiàn)代化的代碼。
能夠應(yīng)用React 18的新特性,如Server Components, Suspense, Concurrent Rendering等,進(jìn)步應(yīng)用的性能和用戶體驗(yàn)。
能夠享用React生態(tài)系統(tǒng)中豐厚的資源和工具,如 Create React App, Next.js, React Router, Redux, Material UI等,快速搭建和部署應(yīng)用。

React 18+TS在線教育平臺(tái)示例

為了展現(xiàn)如何運(yùn)用React 18+TS構(gòu)建一個(gè)在線教育平臺(tái),簡(jiǎn)單完成一個(gè)前端頁(yè)面,顯現(xiàn)課程列表和課程詳情。

首先,我們需求創(chuàng)立一個(gè)React 18+TS項(xiàng)目,能夠運(yùn)用Create React App工具,執(zhí)行以下命令:

npx create-react-app react18-ts-edu --template typescript
cd react18-ts-edu
npm start

這樣就能夠在閱讀器中看到一個(gè)默許的頁(yè)面了。

接下來(lái),我們需求裝置一些依賴庫(kù),如GraphQL, Apollo Client, Material UI等,執(zhí)行以下命令:

npm install graphql @apollo/client @material-ui/core @material-ui/icons

然后,我們需求配置Apollo Client,用于與后端的GraphQL接口通訊。在src目錄下創(chuàng)立一個(gè)apollo.ts文件,添加以下內(nèi)容:

import { ApolloClient, InMemoryCache } from "@apollo/client";
// 創(chuàng)立一個(gè)Apollo Client實(shí)例
const client = new ApolloClient({
  // 指定后端的GraphQL接口地址
  uri: "http://localhost:3000/graphql",
  // 創(chuàng)立一個(gè)內(nèi)存緩存對(duì)象
  cache: new InMemoryCache(),
});
// 導(dǎo)出client對(duì)象
export default client;

接著,我們需求修正src/index.tsx文件,運(yùn)用ApolloProvider組件包裹App組件,將client對(duì)象傳送給子組件。修正后的文件內(nèi)容如下:

import React from "react";
import ReactDOM from "react-dom";
import { ApolloProvider } from "@apollo/client";
import client from "./apollo";
import App from "./App";
import "./index.css";
ReactDOM.render(
  <React.StrictMode>
    // 運(yùn)用ApolloProvider組件包裹App組件
  ,
  document.getElementById("root")
);

接下來(lái),我們需求創(chuàng)立一個(gè)CourseList組件,用于顯現(xiàn)課程列表。在src目錄下創(chuàng)立一個(gè)components文件夾,并在其中創(chuàng)立一個(gè)CourseList.tsx文件,添加以下內(nèi)容:

import React, { useState } from "react";
import { useQuery, gql } from "@apollo/client";
import {
  Grid,
  Card,
  CardActionArea,
  CardMedia,
  CardContent,
  Typography,
  CardActions,
  Button,
} from "@material-ui/core";
// 定義一個(gè)GraphQL查詢語(yǔ)句,用于獲取課程列表
const COURSES_QUERY = gql`
  query {
    courses {
      id
      title
      cover
      price
      rating
    }
  }
`;
// 定義一個(gè)課程類型的接口,用于描繪課程的屬性
interface Course {
  id: string;
  title: string;
  cover: string;
  price: number;
  rating: number;
}
// 定義一個(gè)CourseList組件的函數(shù),接納一個(gè)onSelect屬性,用于傳送選中的課程ID
const CourseList: React.FC<{ onSelect: (id: string) => void }> = ({
  onSelect,
}) => {
  // 運(yùn)用useQuery鉤子函數(shù),傳入查詢語(yǔ)句,獲取查詢結(jié)果
  const { loading, error, data } = useQuery(COURSES_QUERY);
  // 假如查詢正在加載中,返回一個(gè)提示信息
  if (loading) return
Loading...
;
  // 假如查詢出錯(cuò)了,返回一個(gè)錯(cuò)誤信息
  if (error) return
Error :(
;
  // 假如查詢勝利了,返回一個(gè)網(wǎng)格規(guī)劃的課程列表
  return (
      {data.courses.map((course: Course) => (
            <CardActionArea onClick={() => onSelect(course.id)}>
              <CardMedia
                component="img"
                alt={course.title}
                height="140"
                image={course.cover}
                title={course.title}
              />
                  {course.title}
                  {`價(jià)錢:${course.price}元`}
                  {`評(píng)分:${course.rating}`}
              </CardContent

以上就是React18+TS通用后臺(tái)管理系統(tǒng)解決方案落地實(shí)戰(zhàn)示例的詳細(xì)內(nèi)容,更多關(guān)于React18+TS后臺(tái)管理系統(tǒng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Ant Design中使用css切換的問(wèn)題及解決

    Ant Design中使用css切換的問(wèn)題及解決

    這篇文章主要介紹了Ant Design中使用css切換的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • React.InputHTMLAttributes實(shí)踐和注意事項(xiàng)

    React.InputHTMLAttributes實(shí)踐和注意事項(xiàng)

    文章討論了如何在封裝組件中使用React.InputHTMLAttributes,以及如何通過(guò) {...inputProps} 動(dòng)態(tài)傳遞屬性,最后,文章總結(jié)了使用React.InputHTMLAttributes的最佳實(shí)踐和注意事項(xiàng),感興趣的朋友一起看看吧
    2024-11-11
  • React前端DOM常見(jiàn)Hook封裝示例上

    React前端DOM常見(jiàn)Hook封裝示例上

    這篇文章主要為大家介紹了React前端DOM常見(jiàn)Hook封裝示例上篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • react項(xiàng)目如何運(yùn)行在微信公眾號(hào)

    react項(xiàng)目如何運(yùn)行在微信公眾號(hào)

    這篇文章主要介紹了react項(xiàng)目如何運(yùn)行在微信公眾號(hào),幫助大家更好的理解和學(xué)習(xí)使用react,感興趣的朋友可以了解下
    2021-04-04
  • react?表單數(shù)據(jù)形式配置化設(shè)計(jì)

    react?表單數(shù)據(jù)形式配置化設(shè)計(jì)

    這篇文章主要介紹了react表單數(shù)據(jù)形式配置化設(shè)計(jì),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • React Hook 父子組件相互調(diào)用函數(shù)方式

    React Hook 父子組件相互調(diào)用函數(shù)方式

    這篇文章主要介紹了React Hook 父子組件相互調(diào)用函數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • React memo減少重復(fù)渲染詳解

    React memo減少重復(fù)渲染詳解

    React.memo為高階組件。它與React.PureComponent 非常相似,但它適用于函數(shù)組件,但不適用于class組件。文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-10-10
  • Remix?路由模塊輸出對(duì)象handle函數(shù)

    Remix?路由模塊輸出對(duì)象handle函數(shù)

    這篇文章主要為大家介紹了Remix?路由模塊輸出對(duì)象handle函數(shù)使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • React18的useEffect執(zhí)行兩次如何應(yīng)對(duì)

    React18的useEffect執(zhí)行兩次如何應(yīng)對(duì)

    這篇文章主要給大家介紹了關(guān)于React18的useEffect執(zhí)行兩次如何應(yīng)對(duì)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用React具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • 基于Cloud?Studio構(gòu)建React完成點(diǎn)餐H5頁(yè)面(騰訊云?Cloud?Studio?實(shí)戰(zhàn)訓(xùn)練營(yíng))

    基于Cloud?Studio構(gòu)建React完成點(diǎn)餐H5頁(yè)面(騰訊云?Cloud?Studio?實(shí)戰(zhàn)訓(xùn)練營(yíng))

    最近也是有機(jī)會(huì)參與到了騰訊云舉辦的騰訊云Cloud Studio實(shí)戰(zhàn)訓(xùn)練營(yíng),借此了解了騰訊云Cloud?Studio產(chǎn)品,下面就來(lái)使用騰訊云Cloud?Studio做一個(gè)實(shí)戰(zhàn)案例來(lái)深入了解該產(chǎn)品的優(yōu)越性吧,感興趣的朋友跟隨小編一起看看吧
    2023-08-08

最新評(píng)論