国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

React 18 使用 Context 深層傳遞參數(shù)

這篇具有很好參考價值的文章主要介紹了React 18 使用 Context 深層傳遞參數(shù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

參考文章

使用 Context 深層傳遞參數(shù)

通常來說,會通過 props 將信息從父組件傳遞到子組件。但是,如果必須通過許多中間組件向下傳遞 props,或是在應(yīng)用中的許多組件需要相同的信息,傳遞 props 會變的十分冗長和不便。Context 允許父組件向其下層無論多深的任何組件提供信息,而無需通過 props 顯式傳遞。

傳遞 props 帶來的問題

傳遞 props 是將數(shù)據(jù)通過 UI 樹顯式傳遞到使用它的組件的好方法。

但是當(dāng)需要在組件樹中深層傳遞參數(shù)以及需要在組件間復(fù)用相同的參數(shù)時,傳遞 props 就會變得很麻煩。最近的根節(jié)點父組件可能離需要數(shù)據(jù)的組件很遠,狀態(tài)提升 到太高的層級會導(dǎo)致 “逐層傳遞 props” 的情況。

React 18 使用 Context 深層傳遞參數(shù),前端,react,Context,Context 的使用場景,傳遞 props 帶來的問題,使用Context深層傳遞參數(shù),創(chuàng)建 context

React 的 context 功能可以在組件樹中不需要 props 將數(shù)據(jù)“直達”到所需的組件中。

Context:傳遞 props 的另一種方法

Context 讓父組件可以為它下面的整個組件樹提供數(shù)據(jù)。Context 有很多種用途。這里就有一個示例。思考一下這個 Heading 組件接收一個 level 參數(shù)來決定它標(biāo)題尺寸的場景:

// App.js
import Heading from './Heading.js';
import Section from './Section.js';

export default function Page() {
  return (
    <Section>
      <Heading level={1}>主標(biāo)題</Heading>
      <Heading level={2}>副標(biāo)題</Heading>
      <Heading level={3}>子標(biāo)題</Heading>
	  <Heading level={4}>子子標(biāo)題</Heading>
    </Section>
  );
}
// Section.js
export default function Section({ children }) {
  return (
    <section className="section">
      {children}
    </section>
  );
}
//  Heading.js
export default function Heading({ level, children }) {
  switch (level) {
    case 1:
      return <h1>{children}</h1>;
    case 2:
      return <h2>{children}</h2>;
    case 3:
      return <h3>{children}</h3>;
    case 4:
      return <h4>{children}</h4>;
    default:
      throw Error('未知的 level:' + level);
  }
}

假設(shè)想讓相同 Section 中的多個 Heading 具有相同的尺寸:

import Heading from './Heading.js';
import Section from './Section.js';

export default function Page() {
  return (
    <Section>
      <Heading level={1}>主標(biāo)題</Heading>
      <Section>
        <Heading level={2}>副標(biāo)題</Heading>
        <Heading level={2}>副標(biāo)題</Heading>
        <Section>
          <Heading level={3}>子標(biāo)題</Heading>
          <Heading level={3}>子標(biāo)題</Heading>
          <Section>
            <Heading level={4}>子子標(biāo)題</Heading>
            <Heading level={4}>子子標(biāo)題</Heading>
          </Section>
        </Section>
      </Section>
    </Section>
  );
}

目前,將 level 參數(shù)分別傳遞給每個 <Heading>

<Section>
  <Heading level={3}>關(guān)于</Heading>
  <Heading level={3}>照片</Heading>
</Section>

level 參數(shù)傳遞給 <Section> 組件而不是傳給 <Heading> 組件看起來更好一些。這樣的話可以強制使同一個 section 中的所有標(biāo)題都有相同的尺寸:

<Section level={3}>
  <Heading>關(guān)于</Heading>
  <Heading>照片</Heading>
</Section>

但是 <Heading> 組件是如何知道離它最近的 <Section> 的 level 的呢?

這需要子組件可以通過某種方式“訪問”到組件樹中某處在其上層的數(shù)據(jù)。

不能只通過 props 來實現(xiàn)它。這就是 context 大顯身手的地方。可以通過以下三個步驟來實現(xiàn)它:

  1. 創(chuàng)建 一個 context。(可以將其命名為 LevelContext, 因為它表示的是標(biāo)題級別。)
  2. 在需要數(shù)據(jù)的組件內(nèi) 使用 剛剛創(chuàng)建的 context。(Heading 將會使用 LevelContext。)
  3. 在指定數(shù)據(jù)的組件中 提供 這個 context。 (Section 將會提供 LevelContext。)

Context 可以讓父節(jié)點,甚至是很遠的父節(jié)點都可以為其內(nèi)部的整個組件樹提供數(shù)據(jù)。

React 18 使用 Context 深層傳遞參數(shù),前端,react,Context,Context 的使用場景,傳遞 props 帶來的問題,使用Context深層傳遞參數(shù),創(chuàng)建 context

Step 1:創(chuàng)建 context

首先,需要創(chuàng)建這個 context,并 將其從一個文件中導(dǎo)出,這樣組件才可以使用它:

// LevelContext.js
import { createContext } from 'react';

export const LevelContext = createContext(1);

createContext 只需默認(rèn)值這么一個參數(shù)。在這里, 1 表示最大的標(biāo)題級別,但是可以傳遞任何類型的值(甚至可以傳入一個對象)。將在下一個步驟中見識到默認(rèn)值的意義。

Step 2:使用 Context

從 React 中引入 useContext Hook 以及剛剛創(chuàng)建的 context:

import { useContext } from 'react';
import { LevelContext } from './LevelContext.js';

目前,Heading 組件從 props 中讀取 level

export default function Heading({ level, children }) {
  // ...
}

刪掉 level 參數(shù)并從剛剛引入的 LevelContext 中讀取值:

export default function Heading({ children }) {
  const level = useContext(LevelContext);
  // ...
}

useContext 是一個 Hook。和 useState 以及 useReducer一樣,只能在 React 組件中(不是循環(huán)或者條件里)立即調(diào)用 Hook。useContext 告訴 React Heading 組件想要讀取 LevelContext

現(xiàn)在 Heading 組件沒有 level 參數(shù),不需要再像這樣在 JSX 中將 level 參數(shù)傳遞給 Heading

<Section>
  <Heading level={4}>子子標(biāo)題</Heading>
  <Heading level={4}>子子標(biāo)題</Heading>
</Section>

修改一下 JSX,讓 Section 組件代替 Heading 組件接收 level 參數(shù):

<Section level={4}>
  <Heading>子子標(biāo)題</Heading>
  <Heading>子子標(biāo)題</Heading>
</Section>

將修改下邊的代碼直到它正常運行:

import Heading from './Heading.js';
import Section from './Section.js';

export default function Page() {
  return (
    <Section level={1}>
      <Heading>主標(biāo)題</Heading>
      <Section level={2}>
        <Heading>副標(biāo)題</Heading>
        <Heading>副標(biāo)題</Heading>
        <Section level={3}>
          <Heading>子標(biāo)題</Heading>
          <Heading>子標(biāo)題</Heading>
          <Section level={4}>
            <Heading>子子標(biāo)題</Heading>
            <Heading>子子標(biāo)題</Heading>
          </Section>
        </Section>
      </Section>
    </Section>
  );
}

注意:這個示例還不能運行。所有 headings 的尺寸都一樣,因為 即使正在使用 context,但是還沒有提供它。 React 不知道從哪里獲取這個 context!

如果不提供 context,React 會使用在上一步指定的默認(rèn)值。在這個例子中,為 createContext 傳入了 1 這個參數(shù),所以 useContext(LevelContext) 會返回 1,把所有的標(biāo)題都設(shè)置為<h1>。通過讓每個 Section 提供它自己的 context 來修復(fù)這個問題。

Step 3:提供 context

Section 組件目前渲染傳入它的子組件:

export default function Section({ children }) {
  return (
    <section className="section">
      {children}
    </section>
  );
}

把它們用 context provider 包裹起來 以提供 LevelContext 給它們:

import { LevelContext } from './LevelContext.js';

export default function Section({ level, children }) {
  return (
    <section className="section">
      <LevelContext.Provider value={level}>
        {children}
      </LevelContext.Provider>
    </section>
  );

這告訴 React:“如果在 <Section> 組件中的任何子組件請求 LevelContext,給他們這個 level?!苯M件會使用 UI 樹中在它上層最近的那個 <LevelContext.Provider> 傳遞過來的值。

import Heading from './Heading.js';
import Section from './Section.js';

export default function Page() {
  return (
    <Section level={1}>
      <Heading>主標(biāo)題</Heading>
      <Section level={2}>
        <Heading>副標(biāo)題</Heading>
        <Heading>副標(biāo)題</Heading>
        <Section level={3}>
          <Heading>子標(biāo)題</Heading>
          <Heading>子標(biāo)題</Heading>
          <Section level={4}>
            <Heading>子子標(biāo)題</Heading>
            <Heading>子子標(biāo)題</Heading>
          </Section>
        </Section>
      </Section>
    </Section>
  );
}

這與原始代碼的運行結(jié)果相同,但是不需要向每個 Heading 組件傳遞 level 參數(shù)了!取而代之的是,它通過訪問上層最近的 Section 來“斷定”它的標(biāo)題級別:

  1. 將一個 level 參數(shù)傳遞給 <Section>。
  2. Section 把它的子元素包在 <LevelContext.Provider value={level}> 里面。
  3. Heading 使用 useContext(LevelContext) 訪問上層最近的 LevelContext 提供的值。

在相同的組件中使用并提供 context

目前,仍需要手動指定每個 section 的 level

export default function Page() {
  return (
    <Section level={1}>
      ...
      <Section level={2}>
        ...
        <Section level={3}>
          ...

由于 context 可以從上層的組件讀取信息,每個 Section 都會從上層的 Section 讀取 level,并自動向下層傳遞 level + 1。 可以像下面這樣做:

// Section.js
import { useContext } from 'react';
import { LevelContext } from './LevelContext.js';

export default function Section({ children }) {
  const level = useContext(LevelContext);
  return (
    <section className="section">
      <LevelContext.Provider value={level + 1}>
        {children}
      </LevelContext.Provider>
    </section>
  );
}

這樣修改之后,不用將 level 參數(shù)傳給 <Section> 或者是 <Heading> 了:

// App.js
import Heading from './Heading.js';
import Section from './Section.js';

export default function Page() {
  return (
    <Section>
      <Heading>主標(biāo)題</Heading>
      <Section>
        <Heading>副標(biāo)題</Heading>
        <Heading>副標(biāo)題</Heading>
        <Section>
          <Heading>子標(biāo)題</Heading>
          <Heading>子標(biāo)題</Heading>
          <Section>
            <Heading>子子標(biāo)題</Heading>
            <Heading>子子標(biāo)題</Heading>
          </Section>
        </Section>
      </Section>
    </Section>
  );
}
// Heading.js
import { useContext } from 'react';
import { LevelContext } from './LevelContext.js';

export default function Heading({ children }) {
  const level = useContext(LevelContext);
  switch (level) {
    case 0:
      throw Error('Heading 必須在 Section 內(nèi)部!');
    case 1:
      return <h1>{children}</h1>;
    case 2:
      return <h2>{children}</h2>;
    case 3:
      return <h3>{children}</h3>;
    case 4:
      return <h4>{children}</h4>;
    default:
      throw Error('未知的 level:' + level);
  }
}

現(xiàn)在,HeadingSection 都通過讀取 LevelContext 來判斷它們的深度。而且 Section 把它的子組件都包在 LevelContext 中來指定其中的任何內(nèi)容都處于一個“更深”的級別。

注意:本示例使用標(biāo)題級別來展示,因為它們直觀地顯示了嵌套組件如何覆蓋 context。但是 context 對于許多其他的場景也很有用。可以用它來傳遞整個子樹需要的任何信息:當(dāng)前的顏色主題、當(dāng)前登錄的用戶等。

Context 會穿過中間層級的組件

可以在提供 context 的組件和使用它的組件之間的層級插入任意數(shù)量的組件。這包括像 <div> 這樣的內(nèi)置組件和自己創(chuàng)建的組件。

在這個示例中,相同的 Post 組件(帶有虛線邊框)在兩個不同的嵌套層級上渲染。注意,它內(nèi)部的 <Heading> 會自動從最近的 <Section> 獲取它的級別:

// App.js
import Heading from './Heading.js';
import Section from './Section.js';

export default function ProfilePage() {
  return (
    <Section>
      <Heading>My Profile</Heading>
      <Post
        title="旅行者,你好!"
        body="來看看我的冒險。"
      />
      <AllPosts />
    </Section>
  );
}

function AllPosts() {
  return (
    <Section>
      <Heading>帖子</Heading>
      <RecentPosts />
    </Section>
  );
}

function RecentPosts() {
  return (
    <Section>
      <Heading>最近的帖子</Heading>
      <Post
        title="里斯本的味道"
        body="...那些蛋撻!"
      />
      <Post
        title="探戈節(jié)奏中的布宜諾斯艾利斯"
        body="我愛它!"
      />
    </Section>
  );
}

function Post({ title, body }) {
  return (
    <Section isFancy={true}>
      <Heading>
        {title}
      </Heading>
      <p><i>{body}</i></p>
    </Section>
  );
}
// Section.js
import { useContext } from 'react';
import { LevelContext } from './LevelContext.js';

export default function Section({ children, isFancy }) {
  const level = useContext(LevelContext);
  return (
    <section className={
      'section ' +
      (isFancy ? 'fancy' : '')
    }>
      <LevelContext.Provider value={level + 1}>
        {children}
      </LevelContext.Provider>
    </section>
  );
}

不需要做任何特殊的操作。Section 為它內(nèi)部的樹指定一個 context,所以可以在任何地方插入一個 <Heading>,而且它會有正確的尺寸。

Context 讓你可以編寫“適應(yīng)周圍環(huán)境”的組件,并且根據(jù) 在哪 (或者說 在哪個 context 中)來渲染它們不同的樣子。

Context 的工作方式可能會讓你想起 CSS 屬性繼承。在 CSS 中,可以為一個 <div> 手動指定 color: blue,并且其中的任何 DOM 節(jié)點,無論多深,都會繼承那個顏色,除非中間的其他 DOM 節(jié)點用 color: green 來覆蓋它。類似地,在 React 中,覆蓋來自上層的某些 context 的唯一方法是將子組件包裹到一個提供不同值的 context provider 中

在 CSS 中,諸如 colorbackground-color 之類的不同屬性不會覆蓋彼此。可以設(shè)置所有 <div>color 為紅色,而不會影響 background-color。類似地,不同的 React context 不會覆蓋彼此。通過 createContext() 創(chuàng)建的每個 context 都和其他 context 完全分離,只有使用和提供 那個特定的 context 的組件才會聯(lián)系在一起。一個組件可以輕松地使用或者提供許多不同的 context。

寫在使用 context 之前

使用 Context 看起來非常誘人!然而,這也意味著它也太容易被過度使用了。如果只想把一些 props 傳遞到多個層級中,這并不意味著需要把這些信息放到 context 里。

在使用 context 之前,可以考慮以下幾種替代方案:

  1. 從 傳遞 props 開始。 如果組件看起來不起眼,那么通過十幾個組件向下傳遞一堆 props 并不罕見。這有點像是在埋頭苦干,但是這樣做可以讓哪些組件用了哪些數(shù)據(jù)變得十分清晰!維護你代碼的人會很高興你用 props 讓數(shù)據(jù)流變得更加清晰。
  2. 抽象組件并 將 JSX 作為 children 傳遞 給它們。 如果通過很多層不使用該數(shù)據(jù)的中間組件(并且只會向下傳遞)來傳遞數(shù)據(jù),這通常意味著在此過程中忘記了抽象組件。舉個例子,可能想傳遞一些像 posts 的數(shù)據(jù) props 到不會直接使用這個參數(shù)的組件,類似 <Layout posts={posts} />。取而代之的是,讓 Layoutchildren 當(dāng)做一個參數(shù),然后渲染 <Layout><Posts posts={posts} /></Layout>。這樣就減少了定義數(shù)據(jù)的組件和使用數(shù)據(jù)的組件之間的層級。

如果這兩種方法都不適合,再考慮使用 context。

Context 的使用場景

  • 主題: 如果應(yīng)用允許用戶更改其外觀(例如暗夜模式),可以在應(yīng)用頂層放一個 context provider,并在需要調(diào)整其外觀的組件中使用該 context。
  • 當(dāng)前賬戶: 許多組件可能需要知道當(dāng)前登錄的用戶信息。將它放到 context 中可以方便地在樹中的任何位置讀取它。某些應(yīng)用還允許同時操作多個賬戶(例如,以不同用戶的身份發(fā)表評論)。在這些情況下,將 UI 的一部分包裹到具有不同賬戶數(shù)據(jù)的 provider 中會很方便。
  • 路由: 大多數(shù)路由解決方案在其內(nèi)部使用 context 來保存當(dāng)前路由。這就是每個鏈接“知道”它是否處于活動狀態(tài)的方式。如果你創(chuàng)建自己的路由庫,你可能也會這么做。
  • 狀態(tài)管理: 隨著應(yīng)用的增長,最終在靠近應(yīng)用頂部的位置可能會有很多 state。許多遙遠的下層組件可能想要修改它們。通常 將 reducer 與 context 搭配使用來管理復(fù)雜的狀態(tài)并將其傳遞給深層的組件來避免過多的麻煩。

Context 不局限于靜態(tài)值。如果在下一次渲染時傳遞不同的值,React 將會更新讀取它的所有下層組件!這就是 context 經(jīng)常和 state 結(jié)合使用的原因。

一般而言,如果樹中不同部分的遠距離組件需要某些信息,context 將會對你大有幫助。文章來源地址http://www.zghlxwxcb.cn/news/detail-698356.html

摘要

  • Context 使組件向其下方的整個樹提供信息。
  • 傳遞 Context 的方法:
    1. 通過 export const MyContext = createContext(defaultValue) 創(chuàng)建并導(dǎo)出 context。
    2. 在無論層級多深的任何子組件中,把 context 傳遞給 useContext(MyContext) Hook 來讀取它。
    3. 在父組件中把 children 包在 <MyContext.Provider value={...}> 中來提供 context。
  • Context 會穿過中間的任何組件。
  • Context 可以讓你寫出 “較為通用” 的組件。
  • 在使用 context 之前,先試試傳遞 props 或者將 JSX 作為 children 傳遞。

到了這里,關(guān)于React 18 使用 Context 深層傳遞參數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • React中路由的參數(shù)傳遞 - 路由的配置文件

    路由的參數(shù)傳遞 傳遞參數(shù)有二種方式( 需要注意的是, 這兩種方式在Router6.x中都是提供的hook函數(shù)的API, 類組件需要通過高階組件的方式使用 ) : 動態(tài)路由的方式; search傳遞參數(shù)( 查詢字符串 ); 方式一: 動態(tài)路由的概念指的是路由中的路徑并不會固定 : 比如/detail的path對應(yīng)一個組件

    2023年04月08日
    瀏覽(16)
  • React-Router 5.0 制作導(dǎo)航欄+頁面參數(shù)傳遞

    React-Router 5.0 制作導(dǎo)航欄+頁面參數(shù)傳遞

    使用 React 構(gòu)建 SPA 應(yīng)用(單頁面應(yīng)用),要想實現(xiàn)頁面間的跳轉(zhuǎn),首先想到的就是使用路由。在 React 中,常用的有兩個包可以實現(xiàn)這個需求,那就是 react-router 和 react-router-dom 。本文主要針對 react-router-dom 進行說明。 眾所周知, JS 由 DOM BOM ECMAScript 組成, React-Router-Dom 使用 BOM 提供

    2024年02月08日
    瀏覽(18)
  • react自定義組件間的傳值,if..else..判斷,for循環(huán)(嵌套map使用),點擊事件(Onclick),頁面上事件實事傳遞參數(shù)(基礎(chǔ)版)

    9.自定義組件間的傳值 10.if..else..判斷 11.for循環(huán)(嵌套map使用) 12.點擊事件(Onclick) 13.頁面上事件實事傳遞參數(shù) 14.關(guān)于export default function App()與export function App()的區(qū)別 ? ?export default不需要{} ? ? ?import ?Gallery from \\\'./Gallery.js\\\'; ? ?export function需要{} ? ? ? import {Gallery} from \\\'./Galler

    2024年01月17日
    瀏覽(29)
  • React 中的 context使用方法

    什么是上下文? 全局變量就是全局的上下文,全局都可以訪問到它;上下文就是你運行一段代碼,所要知道的所有變量。 三大件 React.createContext(): context 的初始化 provider: 提供context的父組件,用來包裹需要context的子組件的 子組件獲得context的方法 代碼如5:

    2024年02月15日
    瀏覽(21)
  • React - 你知道props和state之間深層次的區(qū)別嗎

    React - 你知道props和state之間深層次的區(qū)別嗎

    難度級別:初級及以上 ????????????????????????????????提問概率:60%? 如果把React組件看做一個函數(shù)的話,props更像是外部傳入的參數(shù),而state更像是函數(shù)內(nèi)部定義的變量。那么他們還有哪些更深層次的區(qū)別呢,我們來看一下。 首先說props,他是組件外部傳入

    2024年04月13日
    瀏覽(21)
  • 使用React18+Ts創(chuàng)建項目

    使用React18+Ts創(chuàng)建項目

    首先,使用create-react-app工具創(chuàng)建一個新的React項目: 使用腳手架創(chuàng)建項目后,自帶react-dom等依賴項,但react中的所用的路由方法是react-router-dom中。 默認(rèn)情況下,create-react-app模板會自動生成一些文件和文件夾,這些文件和文件夾包括: node_modules:存儲所有的項目依賴項。 p

    2024年02月09日
    瀏覽(19)
  • React 18中新鉤子 useDeferredValue 使用

    React 18中新鉤子 useDeferredValue 使用

    React是一個流行的用于構(gòu)建用戶界面的JavaScript庫,它不斷發(fā)展以為開發(fā)人員提供優(yōu)化性能的工具。 React 18中引入的此類工具之一是 useDeferredValue 鉤子,它旨在通過優(yōu)先渲染更新來提高應(yīng)用程序的性能。 useDeferredValue 鉤子是React性能優(yōu)化工具集中相對較新的補充。 它在處理異步數(shù)

    2024年01月19日
    瀏覽(25)
  • React18TS項目:配置react-css-modules,使用styleName

    React18TS項目:配置react-css-modules,使用styleName

    他的好處不說了 網(wǎng)上一堆文章一個能打的都沒有, 添加開發(fā)依賴 Babel Plugin \\\"React CSS Modules\\\" | Dr. Pogodin Studio 看@dr.pogodin/babel-plugin-react-css-modules官方文檔 不使用babel-plugin-react-css-modules 手搭webpack配置需要處理 1.能啟用css modules 對于裸 Webpack,請參見webpack css-loader的 modules 的選項

    2024年02月12日
    瀏覽(29)
  • React 18 使用 ref 操作 DOM

    參考文章 由于 React 會自動處理更新 DOM 以匹配渲染輸出,因此在組件中通常不需要操作 DOM。但是,有時可能需要訪問由 React 管理的 DOM 元素 —— 例如,讓一個節(jié)點獲得焦點、滾動它或測量它的尺寸和位置。在 React 中沒有內(nèi)置的方法來做這些事情,所以需要一個指向 DOM 節(jié)點

    2024年02月10日
    瀏覽(21)
  • 使用React 18和WebSocket構(gòu)建實時通信功能

    WebSocket 是一種在 Web 應(yīng)用中實現(xiàn)雙向通信的協(xié)議。它允許服務(wù)器主動向客戶端推送數(shù)據(jù),而不需要客戶端發(fā)起請求。在現(xiàn)代的實時應(yīng)用中, WebSocket 經(jīng)常用于實時數(shù)據(jù)傳輸、聊天功能、實時通知和多人協(xié)作等場景。在本篇博客中,我們將探索如何在 React 18 應(yīng)用中使用 WebSocke

    2024年02月05日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包