精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一文搞定 React 組件通信技巧

開發(fā) 前端
在 React + TypeScript 開發(fā)中,組件通信?是一個核心問題。不同的場景需要不同的通信方式,比如父子組件傳值、兄弟組件共享狀態(tài)、跨層級組件通信等。本文詳細介紹?6 種 React 組件通信方式,幫助你靈活應(yīng)對各種需求。 ?

在 React + TypeScript 開發(fā)中,組件通信 是一個核心問題。不同的場景需要不同的通信方式,比如父子組件傳值、兄弟組件共享狀態(tài)、跨層級組件通信等。本文詳細介紹 6 種 React 組件通信方式,幫助你靈活應(yīng)對各種需求。  

第一種,父組件向子組件傳值(Props)

適用場景:父組件需要向子組件傳遞數(shù)據(jù)。  

實現(xiàn)方式:通過 props 傳遞數(shù)據(jù),并定義類型。  

// 父組件
function Parent() {
  const message: string = "Hello from Parent!";
  return <Child message={message} />;
}
// 子組件 Props 類型
interface ChildProps {
  message: string;
}
// 子組件
function Child({ message }: ChildProps) {
  return <h1>{message}</h1>; // 輸出: Hello from Parent!
}

參數(shù)解構(gòu):直接從ChildProps中解構(gòu)出message屬性,簡化代碼

渲染邏輯:將message的值作為<h1>標簽的內(nèi)容輸出,實現(xiàn)父組件向子組件的數(shù)據(jù)傳遞。

數(shù)據(jù)流動:父組件通過屬性將message傳遞給子組件,子組件通過Props接收并渲染,形成單向數(shù)據(jù)流。

這里推薦使用interface 定義props的類型,確保類型安全。 同時也具有可擴展性, 若需新增Props,只需在ChildProps中添加屬性,無需修改組件邏輯。

第二種, 子組件向父組件傳值(回調(diào)函數(shù))

適用場景:子組件需要向父組件傳遞數(shù)據(jù)(如表單提交、按鈕點擊)。  

實現(xiàn)方式:父組件傳遞回調(diào)函數(shù),子組件調(diào)用并傳值。  

// 父組件
function Parent() {
  const handleChildData = (data: string): void => {
    console.log("Data from Child:", data); // 輸出: Data from Child: Hello from Child!
  };
  return <Child onSendData={handleChildData} />;
}
// 子組件 Props 類型
interface ChildProps {
  onSendData: (data: string) => void;
}
// 子組件
function Child({ onSendData }: ChildProps) {
  const sendData = (): void => {
    onSendData("Hello from Child!");
  };
  return <button onClick={sendData}>Send Data</button>;
}

handleChildData 是父組件準備的一個"收件箱",通過 onSendData={handleChildData} 把這個"收件箱"交給子組件使用;

onSendData:(data:string)=>void;函數(shù)定義了子組件給父組件發(fā)送數(shù)據(jù)的具體實現(xiàn)。在子組件里面再定義一個函數(shù)來調(diào)用發(fā)送數(shù)據(jù)的函數(shù)。

第三種, 兄弟組件通信(狀態(tài)提升)

適用場景:兩個兄弟組件需要共享數(shù)據(jù)。  

實現(xiàn)方式:將共享狀態(tài)提升到父組件,然后通過 `props` 傳遞。  

// 父組件
function Parent() {
  const [sharedData, setSharedData] = useState<string>("Initial Data");
  return (
    <div>
      <SiblingA data={sharedData} />
      <SiblingB onUpdateData={setSharedData} />
    </div>
  );
}
// 兄弟組件A Props 類型
interface SiblingAProps {
  data: string;
}
// 兄弟組件A(顯示數(shù)據(jù))
function SiblingA({ data }: SiblingAProps) {
  return <p>Data from SiblingB: {data}</p>;
}
// 兄弟組件B Props 類型
interface SiblingBProps {
  onUpdateData: (data: string) => void;
}
// 兄弟組件B(更新數(shù)據(jù))
function SiblingB({ onUpdateData }: SiblingBProps) {
  return (
    <button onClick={() => onUpdateData("Updated Data")}>
      Update Data
    </button>
  );
}

使用 useState 管理共享狀態(tài),并明確定義傳輸?shù)臄?shù)據(jù)的 props 類型。  

第四種, 跨層級組件通信(Context API)

適用場景:深層嵌套組件需要共享數(shù)據(jù),避免層層傳遞 `props`。  

實現(xiàn)方式:使用 `React.createContext` 和 `useContext`,并定義 Context 類型。  

// 1. 定義 Context 類型
interface ThemeContextType {
  theme: string;
  setTheme: (theme: string) => void;
}
// 2. 創(chuàng)建 Context(提供默認值)
const ThemeContext = React.createContext<ThemeContextType>({
  theme: "light",
  setTheme: () => {},
});
// 父組件(Provider)
function App() {
  const [theme, setTheme] = useState<string>("light");
  return (
    <ThemeContext.Provider value={{ theme, setTheme }}>
      <ChildComponent />
    </ThemeContext.Provider>
  );
}
// 子組件(Consumer)
function ChildComponent() {
  const { theme, setTheme } = useContext(ThemeContext);
  return (
    <div>
      <p>Current Theme: {theme}</p>
      <button onClick={() => setTheme("dark")}>Toggle Theme</button>
    </div>
  );
}

在父組件中,作為消息發(fā)送者

Provider 包裹需要訪問這些狀態(tài)的子組件,value 屬性傳遞當(dāng)前狀態(tài)和更新函數(shù)

在子組件中,作為消息消費者

使用 useContext 鉤子獲取 Context 值

可以直接使用 theme 和 setTheme

點擊按鈕會調(diào)用 setTheme 更新全局主題

第五種, 全局狀態(tài)管理(Redux / Zustand)

適用場景:大型應(yīng)用,多個組件需要共享復(fù)雜狀態(tài)。  

實現(xiàn)方式(以 Zustand 為例):  從0死磕全棧第五天:React 使用zustand實現(xiàn)To-Do List項目

第六種 ,Refs 直接訪問子組件

適用場景:父組件需要直接調(diào)用子組件的方法。  

實現(xiàn)方式:`useRef` + `forwardRef` + `useImperativeHandle`,并定義 Ref 類型。  

// 1. 定義 Ref 類型
interface ChildRef {
  increment: () => void;
}
// 2. 子組件
const Child = forwardRef<ChildRef>((props, ref) => {
  const [count, setCount] = useState<number>(0);
  useImperativeHandle(ref, () => ({
    increment() {
      setCount(count + 1);
    },
  }));
  return <p>Child Count: {count}</p>;
});
// 3. 父組件
function Parent() {
  const childRef = useRef<ChildRef>(null);
  return (
    <div>
      <Child ref={childRef} />
      <button onClick={() => childRef.current?.increment()}>
        Increment from Parent
      </button>
    </div>
  );
}

執(zhí)行流程

父組件創(chuàng)建 childRef 并傳遞給子組件

子組件通過 useImperativeHandle 暴露 increment 方法

父組件按鈕點擊時,通過 childRef.current.increment() 調(diào)用

子組件內(nèi)部狀態(tài)更新,重新渲染顯示新計數(shù)

選擇建議  

- 簡單數(shù)據(jù)流 → Props / 回調(diào)函數(shù)

- 兄弟組件共享 → 狀態(tài)提升 / Context

- 全局狀態(tài) → Redux / Zustand

- 跨層級通信 → Context 

- 直接操作子組件 → Refs

結(jié)語

通信的終極目標不是傳遞數(shù)據(jù),而是構(gòu)建理解——讓每個組件在正確的時間,以正確的方式,做正確的事。

責(zé)任編輯:武曉燕 來源: golang學(xué)習(xí)記
相關(guān)推薦

2021-10-15 14:28:30

React 組件渲染

2024-01-09 08:24:47

JMM核心線程

2021-08-13 05:50:01

ContainerdDockerKubernetes

2021-03-28 18:40:02

LinuxWindowsJava

2021-10-25 16:01:01

Linux設(shè)備樹字符串

2019-09-23 10:51:14

JavaJava虛擬機Linux

2021-04-27 11:28:21

React.t事件元素

2022-08-17 18:25:37

Java分布式搜索引擎

2021-08-31 07:02:20

Diff算法DOM

2021-10-06 20:23:08

Linux共享內(nèi)存

2020-10-29 08:55:04

微服務(wù)

2020-08-03 08:01:50

爬蟲技巧

2022-04-15 08:03:41

SaaS應(yīng)用管理市場

2021-08-31 07:02:34

數(shù)據(jù)響應(yīng)Vue偵測數(shù)據(jù)變化

2021-04-19 17:32:34

Java內(nèi)存模型

2021-04-02 06:17:10

大數(shù)加減乘除數(shù)據(jù)結(jié)構(gòu)算法

2025-04-07 08:20:00

ORMPython代碼

2022-05-13 10:59:14

容器網(wǎng)絡(luò)通信

2022-04-07 08:37:05

鏈表技巧單鏈表

2023-08-01 08:27:15

Java I/ONIO
點贊
收藏

51CTO技術(shù)棧公眾號

日本免费一区二区视频| 少妇精品高潮欲妇又嫩中文字幕 | 美女久久久精品| 最近2019免费中文字幕视频三 | 日韩欧美国产大片| 欧洲国内综合视频| 91网站在线观看免费| 久久电影中文字幕| 国产精品一区二区视频| 97av在线视频| 午夜精品福利在线视频| 台湾佬综合网| 日韩一区二区不卡| 北条麻妃在线视频| 欧美黑人猛交的在线视频| 国产网站一区二区| 国产精品一区二区a| 亚洲性生活大片| 中文日韩在线| 欧美另类精品xxxx孕妇| 极品蜜桃臀肥臀-x88av| 日韩三区视频| 日韩欧美一二三| 一道本视频在线观看| 免费成人在线电影| 夜色激情一区二区| 在线精品日韩| 欧洲成人av| 成人av免费在线播放| 91精品啪aⅴ在线观看国产| 亚洲婷婷久久综合| 亚洲欧美日韩一区在线观看| 不卡伊人av在线播放| 中文欧美日本在线资源| 一本色道久久99精品综合| 亚洲aaa在线观看| 懂色av一区二区夜夜嗨| 国产日韩精品综合网站| 波多野结衣一二区| 亚洲专区一区| 91精品国产91| 免费看日韩毛片| 在线播放精品| 国产69精品99久久久久久宅男| 国产日韩欧美在线观看视频| 99国产精品一区二区| 亚洲新中文字幕| 亚洲第一页av| 亚洲欧洲av| 亚洲精选在线观看| 大黑人交xxx极品hd| 神马香蕉久久| 国产午夜精品麻豆| 亚洲欧美色图视频| 欧美女优在线视频| 亚洲天天在线日亚洲洲精| 女~淫辱の触手3d动漫| 日韩中文av| 亚洲人成欧美中文字幕| 国产精成人品免费观看| 精品国产精品国产偷麻豆| 一级做a爰片久久毛片美女图片| 黄免费在线观看| 欧美精品一区二区三区精品| 神马久久久久久| 在线观看亚洲网站| 国产精品大片免费观看| 午夜欧美大片免费观看| 丁香社区五月天| 日韩成人一级片| 成人免费高清完整版在线观看| av中文在线观看| 福利一区二区在线观看| 国产亚洲自拍偷拍| 国产视频在线看| 亚洲欧洲在线观看av| 色婷婷777777仙踪林| 免费电影网站在线视频观看福利| 亚洲成人av资源| 女性隐私黄www网站视频| 香港日本韩国三级网站| 亚洲成人三级| 一区二区三区国产精品| 国产精品免费入口| 国产亚洲精品精品国产亚洲综合| 欧美精品一级二级| 亚洲の无码国产の无码步美| 国内精品久久久久久久影视简单| xvideos成人免费中文版| 精品深夜av无码一区二区老年| 午夜在线一区| 91嫩草在线视频| 视频三区在线观看| 亚洲日本护士毛茸茸| 福利视频免费在线观看| 精品三区视频| 欧美videos中文字幕| 性猛交ⅹxxx富婆video | 一区国产精品视频| 黄色一级片中国| 久久综合九色综合欧美狠狠| 亚洲综合国产精品| 每日更新av在线播放| 亚洲男人的天堂网| 成年人在线看片| 91精品啪在线观看国产爱臀| 亚洲品质视频自拍网| 免费又黄又爽又色的视频| 久久精品电影| 国产亚洲欧美另类一区二区三区 | 精品免费一区二区| 欧美国产日韩xxxxx| 在线视频1卡二卡三卡| 91免费在线看| 亚洲精品天堂成人片av在线播放 | 国产jjizz一区二区三区视频| 中文字幕日韩欧美精品高清在线| 日韩免费视频在线观看| 狠狠人妻久久久久久综合麻豆| 国产精品久久久久久久久免费桃花| 成年人网站免费视频| 色悠久久久久综合先锋影音下载 | 尤物在线网址| 欧美人妖巨大在线| 国产精品精品一区二区三区午夜版 | 日本免费一区二区三区| 看黄在线观看| 精品美女被调教视频大全网站| 亚洲综合第一区| 日韩在线一区二区三区| 精品国产综合久久| 成人性生交大片免费看网站 | 亚洲成人精品在线播放| 99精品视频在线观看播放| 国产成人精品优优av| 香蕉视频网站在线| 婷婷开心久久网| 欧美xxxxx精品| 国内精品久久久久久久97牛牛| 成人激情电影一区二区| 精品视频在线一区二区| 欧美日韩成人综合在线一区二区| 国产熟女一区二区| 老司机亚洲精品| 欧美一级二级三级| 户外露出一区二区三区| 国产亚洲精品久久久| 啪啪小视频网站| 国产精品美女久久久久久| 五月婷婷深爱五月| 久久在线免费| 91久久久久久久一区二区| 精品美女在线观看视频在线观看 | 欧美午夜激情在线| 真人bbbbbbbbb毛片| 夜夜嗨一区二区| 欧美凹凸一区二区三区视频| 天天综合网站| 日韩视频精品在线| 国产叼嘿视频在线观看| 亚洲影院免费观看| 人妻激情偷乱频一区二区三区| 国产综合自拍| 欧美日韩亚洲免费| 99只有精品| 欧美成人一区在线| 日批视频免费播放| 色哟哟精品一区| 特级西西人体高清大胆| 韩国三级在线一区| 日韩亚洲欧美视频| 国产手机视频在线| 激情成人亚洲| 免费成人看片网址| 欧美日韩va| 久久久久久久国产| 免费福利在线观看| 欧美日韩另类一区| 加勒比av在线播放| 久久综合九色综合久久久精品综合 | 正在播放亚洲一区| 国产真人真事毛片| 久久精品视频免费| 色偷偷中文字幕| 最新日韩在线| 一道精品一区二区三区| 日韩在线亚洲| 国产精品成人久久久久| 99福利在线| 亚洲免费av片| 国产欧美日韩成人| 欧美天堂在线观看| 69av.com| 国产亚洲美州欧州综合国| 中文字幕久久久久久久| 葵司免费一区二区三区四区五区| 国产一区一区三区| 中文字幕精品影院| 成人自拍爱视频| 国外成人福利视频| 97人人模人人爽人人喊中文字| 免费黄色在线网站| 日韩麻豆第一页| 亚洲精品喷潮一区二区三区| 欧美在线免费观看亚洲| 色播视频在线播放| 亚洲欧美视频在线观看| 懂色av蜜桃av| 91日韩在线专区| 亚洲v在线观看| 精品一区二区三区日韩| 久久9精品区-无套内射无码| 欧美女人交a| 亚洲一区3d动漫同人无遮挡 | wwwwww.欧美系列| 特级黄色片视频| 免费不卡在线视频| 18禁免费无码无遮挡不卡网站| 欧美精品入口| 国产精品av免费| 日韩欧美高清在线播放| 免费精品视频一区| 嗯用力啊快一点好舒服小柔久久| 91夜夜未满十八勿入爽爽影院| 精品女同一区二区三区在线观看| 日本精品免费一区二区三区| 激情av在线| 欧美成人精品在线播放| 麻豆av在线导航| 综合国产在线视频| 99se视频在线观看| 伊人久久免费视频| 国产香蕉视频在线看| 亚洲美女在线观看| 日本私人网站在线观看| 日韩精品免费在线视频观看| 五月婷中文字幕| 亚洲精品97久久| 偷拍25位美女撒尿视频在线观看| 精品欧美一区二区在线观看| 精品人妻一区二区三区三区四区| 欧美一区二区播放| 国产视频第一页| 日韩一区和二区| 国产肥老妇视频| 亚洲电影免费观看| 香蕉视频911| 亚洲欧美日韩在线一区| 国产三级在线| 日韩有码视频在线| 国产一二三区在线观看| 美女啪啪无遮挡免费久久网站| av免费在线免费| 久久久久久久久久国产| a在线视频v视频| 欧美在线视频播放| 欧美精品总汇| 国产精品一香蕉国产线看观看| 日韩精品一级毛片在线播放| 成人免费大片黄在线播放| 日本免费精品| 久久人人爽爽人人爽人人片av| 一区二区三区视频免费观看| 天堂资源在线亚洲资源| 天天操综合网| 亚洲理论电影在线观看| 国产视频一区在线观看一区免费| 成人小视频在线看| 久久99精品久久久久久国产越南| 免费看的av网站| 91热门视频在线观看| 欧美aaa级片| 亚洲一区二区视频在线观看| 99久久精品国产亚洲| 欧美亚一区二区| www.蜜臀av.com| 亚洲精品视频免费在线观看| 日本最新在线视频| 欧美精品激情在线观看| 超碰一区二区| 成人在线国产精品| 美国成人xxx| 一区二区不卡在线观看| 一区免费视频| 91制片厂毛片| 99久久99久久免费精品蜜臀| 国产18无套直看片| 亚洲五月六月丁香激情| 国语对白做受69按摩| 日韩免费观看高清完整版| 你懂的免费在线观看| 久久亚洲春色中文字幕| 忘忧草在线影院两性视频| 成人性生交大片免费看小说| 亚洲女娇小黑人粗硬| 国产911在线观看| 日韩激情一区二区| 无码国产精品一区二区免费式直播| 国产清纯白嫩初高生在线观看91| 精品视频一区二区在线观看| 欧美综合一区二区| 人妻少妇一区二区三区| 中文字幕久久精品| 亚洲国产福利| 国产精品一区二区欧美| 国产高清一区二区| 国产一区视频免费观看| 成人小视频在线观看| 国产免费一区二区三区四区| 91精品福利在线| 亚洲人在线观看视频| 欧美激情图片区| japansex久久高清精品| 五月天亚洲综合| 美女久久一区| 精品人妻一区二区三区日产乱码卜| 一区二区三区精密机械公司| 国产有码在线观看| 亚洲欧美精品一区| 韩国精品一区| 粉嫩av一区二区三区免费观看 | 亚洲色成人一区二区三区小说| 国产精品性做久久久久久| 日本黄色激情视频| 欧美综合色免费| 国产一区二区三区福利| 欧美一级高清免费播放| 欧美日韩一区二区三区四区不卡| 国产午夜精品视频一区二区三区| 久久国产精品99精品国产| 人妻熟人中文字幕一区二区| 色婷婷亚洲精品| 久久精品a一级国产免视看成人 | 久久日一线二线三线suv| 国产精品不卡av| 精品99999| 国产精品vvv| 精品国产aⅴ麻豆| 中文日韩欧美| 亚洲av片不卡无码久久| 欧美日韩国产中文字幕| 色天堂在线视频| 日本老师69xxx| 国产一区二区在线| 九色porny91| 国产精品国产三级国产aⅴ入口| 亚洲特级黄色片| 日韩三级影视基地| 日韩中文一区二区| 妞干网在线视频观看| 99精品热视频| 麻豆精品久久久久久久99蜜桃| 亚洲视频在线免费看| julia一区二区三区中文字幕| 亚洲国产精品一区二区第一页| 久草在线在线精品观看| 农村黄色一级片| 亚洲国产精品va在看黑人| 成人免费看黄| 亚洲成人在线视频网站| 国产一区二区三区免费观看| 欧美日韩中文字幕在线观看| 亚洲成人精品av| 肉色欧美久久久久久久免费看| 视频一区视频二区视频| 国产综合成人久久大片91| 久久久久97国产| 亚洲九九九在线观看| 天堂综合在线播放| 日本熟妇人妻xxxx| 久久九九99视频| 国产精品国产一区二区三区四区 | 精品一区二区三区视频在线播放| 成人av在线播放观看| 久久众筹精品私拍模特| 一本色道久久综合亚洲| 欧美多人爱爱视频网站| 久操成人av| 丰满人妻一区二区三区53视频| 欧美日韩另类在线| 看黄网站在线| 女人一区二区三区| 国模一区二区三区白浆| 国产又大又黑又粗免费视频| 在线日韩日本国产亚洲| 96sao在线精品免费视频| 毛片av免费在线观看| 亚洲激情av在线| 九色网友自拍视频手机在线| 114国产精品久久免费观看| 久久久久综合| 激情小说中文字幕| 尤物tv国产一区| 丝袜美腿一区二区三区动态图| 久久出品必属精品| 在线观看亚洲a| 98色花堂精品视频在线观看| 一区二区三区|亚洲午夜| 91在线国产福利| 国产免费高清av|