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

React中組件通信有哪些方式

這篇具有很好參考價值的文章主要介紹了React中組件通信有哪些方式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

React中組件間的通信有一下幾種情況:
? ? ? ? 父組件向子組件通信,可以通過props方式傳遞數(shù)據(jù);也可以通過ref防暑傳遞數(shù)據(jù);
? ? ? ? 子組件向父組件通信,通過回調(diào)函數(shù)方式傳遞數(shù)據(jù);
????????父組件向后代所有組件傳遞數(shù)據(jù),如果組件層級過多,通過props的方式傳遞數(shù)據(jù)狠繁瑣,可以通過Context.Provider的方式;
? ? ? ? ?一個數(shù)據(jù)源實現(xiàn)跨組件通信,通過指定contextType的方式來實現(xiàn)
? ? ? ? 多個數(shù)據(jù)源實現(xiàn)跨組件通信,使用Context.Consumer方式實現(xiàn);

1.父組件向子組件通信 :

父組件向子組件通信有兩種方式,一是父組件通過熟悉進(jìn)行傳遞,子組件通過props接受,二就是父組件通過ref獲取到子組件的實例或者元素,調(diào)用子組件的方法進(jìn)行數(shù)據(jù)傳遞

2. 子組件向父組件通信 :

子組件通過**回調(diào)函數(shù)**向父組件傳遞數(shù)據(jù)。子組件頭蓋骨this.props 接收父組件的方法后進(jìn)行調(diào)用

3.跨組件通信Context:

react 中數(shù)據(jù)是通過 props 屬性自上而下(由父及子)進(jìn)行傳遞的,但這種做法對于多層級父子關(guān)系的組件傳值是極其繁瑣的。react 提供了context api 來實現(xiàn)在組件之間共享此類值的方式,而不必顯式地通過組件樹的逐層傳遞 props。React 16.3之后的contextapi 較之前的好用。?

3.1 父組件向后代組件通信
? ? ?1.使用 createContext() 創(chuàng)建一個context 對象(內(nèi)容為需要傳遞的數(shù)據(jù)),參數(shù)為默認(rèn)值;
? ? ?2.在父組件外層使用 <.Provider> 將當(dāng)前 context 的值傳遞給內(nèi)部所有的組件樹。
? ? ? 3.當(dāng)使用了 <.Provider> 后,不再讀取上面的默認(rèn)值,需要設(shè)置 value 屬性來進(jìn)行數(shù)據(jù)傳遞。當(dāng)組件需要讀取數(shù)據(jù)時,
? ? ?4.指定 contextType 讀取當(dāng)前的 context 對象(即剛開始創(chuàng)建的 context);

3.2 多個數(shù)據(jù)源實現(xiàn)跨組件通信
? ? ? ?1.使用 import `導(dǎo)入要讀取的數(shù)據(jù)文件`。
? ? ? ?2. 使用<.Consumer> ,它里面的語法是`函數(shù)組件的語法`,函數(shù)接收的 `參數(shù)` 為當(dāng)前 createContext() 里的默認(rèn)值。
? ? ? 3. ?<.Consumer> 可以嵌套使用,也可以平級使用。

3.3 Context 的使用場景
? ? ?1. Context 主要應(yīng)用場景在于**很多不同層級的組件需要訪問同樣一些的數(shù)據(jù)**。請謹(jǐn)慎使用,因為這會使得組件的復(fù)用性變差。**如果用組件組合可以解決的問題,就不要使用 Context** 。
? ? ? 2.使用 context 的通用的場景包括管理當(dāng)前的 locale,theme,或者一些緩存數(shù)據(jù)。

3.4 Context 總結(jié)
? ?1. `React.createContext(defaultValue)` 創(chuàng)建一個 Context 對象。
? ? 2. ?`Class.contextType`,掛載在 class 上的 contextType 屬性會被賦值為一個 Context 對象。這能讓你使用 `this.context` 來消費(fèi)最近的 Context 上的數(shù)據(jù)。你可以在任何生命周期中訪問到它,包括 render 函數(shù)中。
?????3.`Context.Provider`,接收一個 value 屬性,傳遞給消費(fèi)組件。一個 Provider 可以和多個消費(fèi)組件有對應(yīng)關(guān)系。多個 Provider 也可以嵌套使用,里層的會覆蓋外層的數(shù)據(jù)。
? ? ?4. Context.Consumer,是函數(shù)作為子元素(function as a child)這種做法。這個函數(shù)參數(shù)接收當(dāng)前的 context 值,返回一個 React 節(jié)點。傳遞給函數(shù)的 value 等同于往上組件樹離這個 context 最近的 Provider 提供的 value 值。如果沒有對應(yīng)的 Provider,value 參數(shù)等同于傳遞給 createContext() 的 defaultValue。
? ? 5. `Context.displayName`,瀏覽器中調(diào)試用。
? ? 6. **Consumer 一般情況下都是和 Provider 同時使用。**
????????6.1 當(dāng) Provider 的 value 值發(fā)生變化時,它內(nèi)部的所有消費(fèi)組件都會重新渲染。Provider 及其內(nèi)部 consumer 組件都不受制于 shouldComponentUpdate 函數(shù),因此當(dāng) consumer 組件在其祖先組件退出更新的情況下也能更新。

Redux:

上面有提到使用 Context 做組件間的通訊會使得組件的復(fù)用性變差,如果項目比較復(fù)雜、模塊比較很多的情況,推薦使用 Redux 來做組件間的通信。
? ? ? ?1.react-redux 提供兩個核心的api:
? ? ? ? 2. Provider: 提供store,根據(jù)單一store原則 ,一般只會出現(xiàn)在整個應(yīng)用程序的最頂層。
? ? ? ? 3.connect: 用于連接展示組件和 redux store。
? ? ? ? 4. connect 的語法格式為:

connect(mapStateToProps?, mapDispatchToProps?, mergeProps?, options?)(component)

? ? ? ? ? ? ? ?4.1 一般來說只會用到前面兩個,它的作用是:
? ? ? ? ? ? ? ? 4.2 把store.getState()的狀態(tài)轉(zhuǎn)化為展示組件props上的屬性
? ? ? ? ? ? ? ? 4.3 把a(bǔ)ctionCreators轉(zhuǎn)化為展示組件props上的方法
? ? 只要上層中有`Provider`組件并且提供了`store`, 那么,子孫級別的任何組件,要想使用`store`里的狀態(tài),都可以通過`connect`方法進(jìn)行連接。如果只是想連接`actionCreators`,可以第一個參數(shù)傳遞為`null`。文章來源地址http://www.zghlxwxcb.cn/news/detail-624661.html

到了這里,關(guān)于React中組件通信有哪些方式的文章就介紹完了。如果您還想了解更多內(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ìn)行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

  • React 組件通信方式

    人生的游戲不在于拿了一副好牌,而在于怎樣去打好壞牌,世上沒有常勝將軍,勇于超越自我者才能得到最后的獎杯。 直接通過屬性進(jìn)行傳遞,數(shù)據(jù)的傳遞可以提高組件的復(fù)用性。 通過回調(diào)函數(shù)(callback)來實現(xiàn)。 ref 標(biāo)記: 父組件拿到子組件的引用,從而調(diào)用子組件的方法

    2024年02月05日
    瀏覽(18)
  • 【react從入門到精通】React父子組件通信方式詳解(有示例)

    【react從入門到精通】React父子組件通信方式詳解(有示例)

    【分享幾個國內(nèi)免費(fèi)可用的ChatGPT鏡像】 【10幾個類ChatGPT國內(nèi)AI大模型】 【用《文心一言》1分鐘寫一篇博客簡直yyds】 【用訊飛星火大模型1分鐘寫一個精美的PPT】 在上一篇文章《JSX詳解》中我們了解了什么是jsx以及jsx的語法規(guī)則。 本文中我們將詳細(xì)了解React父子組件通信方式

    2024年02月05日
    瀏覽(124)
  • AI生成--Vue組件之間通信方式有哪些

    Vue組件之間通信方式有以下幾種: 父子組件通信:父組件可以通過props傳遞數(shù)據(jù)給子組件,子組件通過$emit觸發(fā)事件通知父組件。 兄弟組件通信:可以通過共同的父組件作為中介,兄弟組件通過 e m i t 和 emit和 e mi t 和 on觸發(fā)和監(jiān)聽事件實現(xiàn)通信。 跨級組件通信:可以使用p

    2024年02月08日
    瀏覽(16)
  • 前端react入門day03-react獲取dom與組件通信

    前端react入門day03-react獲取dom與組件通信

    (創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動力,如果看完對你有幫助,請留下您的足跡) 目錄 受控表單綁定? React中獲取DOM 組件通信 父傳子? 父傳子-基礎(chǔ)實現(xiàn) 父傳子-props說明 父傳子 - 特殊的prop children 子傳父? 使用狀態(tài)提升實現(xiàn)兄弟組件通信 使用Context機(jī)制跨

    2024年02月01日
    瀏覽(23)
  • JavaScript 發(fā)布-訂閱設(shè)計模式實現(xiàn) React EventBus(相當(dāng)于vue的$Bus)非父子之間通信

    參考文檔:https://github1s.com/browserify/events/blob/main/events.js ? ? ? ? ? ? ? ? ?https://www.npmjs.com/package/events ? ? ? ? ? ? ? ? ?https://github.com/browserify/events ? ? ? ? ? ? ? ? ? ? 首先先新建一個文件eventBus.tsx 然后再組件A使用=接收 然后再組件B使用=觸發(fā) ? ? 安裝這個events插件

    2023年04月18日
    瀏覽(374)
  • 探索前端跨組件通信:EventBus在Vue和React中的應(yīng)用

    探索前端跨組件通信:EventBus在Vue和React中的應(yīng)用

    本文作者系360奇舞團(tuán)前端開發(fā)工程師 事件總線(Event Bus) 是一種用于組件間通信的模式,通常用于解決組件之間的解耦和簡化通信的問題。在前端框架中,如 Vue.js,事件總線是一個常見的概念。基本上,事件總線是一個能夠觸發(fā)和監(jiān)聽事件的機(jī)制,使得組件能夠在不直接依

    2024年02月02日
    瀏覽(26)
  • 請簡述React是什么?React的主要特點有哪些?React中有哪些主要組件?

    React是一個用于構(gòu)建用戶界面的JavaScript庫,它由Facebook開發(fā)并開源。React的主要特點是其數(shù)據(jù)驅(qū)動和組件化的設(shè)計理念。它允許開發(fā)者將復(fù)雜的界面分解為簡單的組件,并將這些組件以數(shù)據(jù)流的方式組合在一起,使得組件的狀態(tài)和行為可以根據(jù)數(shù)據(jù)的變化而自動更新。React還提

    2024年02月14日
    瀏覽(33)
  • 面試題-React(七):React組件通信

    面試題-React(七):React組件通信

    在React開發(fā)中,組件通信是一個核心概念,它使得不同組件能夠協(xié)同工作,實現(xiàn)更復(fù)雜的交互和數(shù)據(jù)傳遞。常見的組件通信方式:父傳子和子傳父 一、父傳子通信方式 父組件向子組件傳遞數(shù)據(jù)是React中最常見的一種通信方式。這種方式適用于將數(shù)據(jù)從一個上層組件傳遞到其直

    2024年02月11日
    瀏覽(36)
  • 在 React 中,props(屬性)用于在組件之間傳遞數(shù)據(jù)

    在 React 中,props(屬性)用于在組件之間傳遞數(shù)據(jù)。它是父組件向子組件傳遞信息的一種方式,通過 props,父組件可以向子組件傳遞數(shù)據(jù)、回調(diào)函數(shù)、配置項等。 注意: props 是只讀的,它的值由父組件傳遞給子組件時確定,并且在子組件中不能直接修改。如果子組件需要改

    2024年02月15日
    瀏覽(29)
  • React 組件通信-全面解析

    這段代碼包括一個父組件 App 和一個子組件 Module ,實現(xiàn)了父子組件之間的通信。 在父組件 App 中,使用 useState 來定義了一個狀態(tài) defaultTodo ,并初始化為 defaultTodos 。 defaultTodos 是從 ./components/module/contentData 文件中導(dǎo)入的一個默認(rèn)的待辦事項列表。 App 組件中定義了兩個回調(diào)函

    2024年02月15日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包