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

React中組件之間如何通信?

這篇具有很好參考價(jià)值的文章主要介紹了React中組件之間如何通信?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

面試官:React中組件之間如何通信?

React中組件之間如何通信?,React,面試系列,react.js,javascript,ecmascript

一、是什么

我們將組件間通信可以拆分為兩個(gè)詞:

  • 組件
  • 通信

回顧Vue系列的文章,組件是vue中最強(qiáng)大的功能之一,同樣組件化是React的核心思想

相比vue,React的組件更加靈活和多樣,按照不同的方式可以分成很多類型的組件

而通信指的是發(fā)送者通過某種媒體以某種格式來(lái)傳遞信息到收信者以達(dá)到某個(gè)目的,廣義上,任何信息的交通都是通信

組件間通信即指組件通過某種方式來(lái)傳遞信息以達(dá)到某個(gè)目的

二、如何通信

組件傳遞的方式有很多種,根據(jù)傳送者和接收者可以分為如下:

  • 父組件向子組件傳遞
  • 子組件向父組件傳遞
  • 兄弟組件之間的通信
  • 父組件向后代組件傳遞
  • 非關(guān)系組件傳遞

父組件向子組件傳遞

由于React的數(shù)據(jù)流動(dòng)為單向的,父組件向子組件傳遞是最常見的方式

父組件在調(diào)用子組件的時(shí)候,只需要在子組件標(biāo)簽內(nèi)傳遞參數(shù),子組件通過props屬性就能接收父組件傳遞過來(lái)的參數(shù)

function EmailInput(props) {
  return (
    <label>
      Email: <input value={props.email} />
    </label>
  );
}

const element = <EmailInput email="123124132@163.com" />;

子組件向父組件傳遞

子組件向父組件通信的基本思路是,父組件向子組件傳一個(gè)函數(shù),然后通過這個(gè)函數(shù)的回調(diào),拿到子組件傳過來(lái)的值

父組件對(duì)應(yīng)代碼如下:

class Parents extends Component {
  constructor() {
    super();
    this.state = {
      price: 0
    };
  }

  getItemPrice(e) {
    this.setState({
      price: e
    });
  }

  render() {
    return (
      <div>
        <div>price: {this.state.price}</div>
        {/* 向子組件中傳入一個(gè)函數(shù)  */}
        <Child getPrice={this.getItemPrice.bind(this)} />
      </div>
    );
  }
}

子組件對(duì)應(yīng)代碼如下:

class Child extends Component {
  clickGoods(e) {
    // 在此函數(shù)中傳入值
    this.props.getPrice(e);
  }

  render() {
    return (
      <div>
        <button onClick={this.clickGoods.bind(this, 100)}>goods1</button>
        <button onClick={this.clickGoods.bind(this, 1000)}>goods2</button>
      </div>
    );
  }
}

兄弟組件之間的通信

如果是兄弟組件之間的傳遞,則父組件作為中間層來(lái)實(shí)現(xiàn)數(shù)據(jù)的互通,通過使用父組件傳遞

class Parent extends React.Component {
  constructor(props) {
    super(props)
    this.state = {count: 0}
  }
  setCount = () => {
    this.setState({count: this.state.count + 1})
  }
  render() {
    return (
      <div>
        <SiblingA
          count={this.state.count}
        />
        <SiblingB
          onClick={this.setCount}
        />
      </div>
    );
  }
}

父組件向后代組件傳遞

父組件向后代組件傳遞數(shù)據(jù)是一件最普通的事情,就像全局?jǐn)?shù)據(jù)一樣

使用context提供了組件之間通訊的一種方式,可以共享數(shù)據(jù),其他數(shù)據(jù)都能讀取對(duì)應(yīng)的數(shù)據(jù)

通過使用React.createContext創(chuàng)建一個(gè)context

 const PriceContext = React.createContext('price')

context創(chuàng)建成功后,其下存在Provider組件用于創(chuàng)建數(shù)據(jù)源,Consumer組件用于接收數(shù)據(jù),使用實(shí)例如下:

Provider組件通過value屬性用于給后代組件傳遞數(shù)據(jù):

<PriceContext.Provider value={100}>
</PriceContext.Provider>

如果想要獲取Provider傳遞的數(shù)據(jù),可以通過Consumer組件或者或者使用contextType屬性接收,對(duì)應(yīng)分別如下:

class MyClass extends React.Component {
  static contextType = PriceContext;
  render() {
    let price = this.context;
    /* 基于這個(gè)值進(jìn)行渲染工作 */
  }
}

Consumer組件:

<PriceContext.Consumer>
    { /*這里是一個(gè)函數(shù)*/ }
    {
        price => <div>price:{price}</div>
    }
</PriceContext.Consumer>

非關(guān)系組件傳遞

如果組件之間關(guān)系類型比較復(fù)雜的情況,建議將數(shù)據(jù)進(jìn)行一個(gè)全局資源管理,從而實(shí)現(xiàn)通信,例如redux。關(guān)于redux的使用后續(xù)再詳細(xì)介紹

三、總結(jié)

由于React是單向數(shù)據(jù)流,主要思想是組件不會(huì)改變接收的數(shù)據(jù),只會(huì)監(jiān)聽數(shù)據(jù)的變化,當(dāng)數(shù)據(jù)發(fā)生變化時(shí)它們會(huì)使用接收到的新值,而不是去修改已有的值

因此,可以看到通信過程中,數(shù)據(jù)的存儲(chǔ)位置都是存放在上級(jí)位置中文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-758928.html

參考文獻(xiàn)

  • https://react.docschina.org/docs/context.html
  • https://whyta.cn/post/b016b80c2285/

到了這里,關(guān)于React中組件之間如何通信?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 在 React 中,props(屬性)用于在組件之間傳遞數(shù)據(jù)

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

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

    React -- 組件通信

    A-B 父子通信 B-C 兄弟通信 A-E 跨層通信 **實(shí)現(xiàn)步驟 ** 父組件傳遞數(shù)據(jù) - 在子組件標(biāo)簽上綁定屬性 子組件接收數(shù)據(jù) - 子組件通過props參數(shù)接收數(shù)據(jù) props可以傳遞任意的合法數(shù)據(jù) ,比如數(shù)字、字符串、布爾值、數(shù)組、對(duì)象、函數(shù)、JSX props是只讀對(duì)象 子組件只能讀取props中的數(shù)據(jù),

    2024年02月19日
    瀏覽(25)
  • React 組件通信方式

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

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

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

    2024年02月15日
    瀏覽(17)
  • react父子組件通信

    父?jìng)髯樱鹤畛R?把父組件中的數(shù)據(jù)傳給子組件 子傳父:子組件調(diào)用父組件傳遞過來(lái)的參數(shù),并且把想要傳遞的數(shù)據(jù)當(dāng)成函數(shù)的實(shí)參傳入即可 【子組件通過調(diào)用父組件傳遞到子組件的方法向父組件傳遞數(shù)據(jù)】 對(duì)于子傳父中子組件還是先調(diào)用了父組件傳遞過來(lái)的參數(shù),之后再向

    2024年02月07日
    瀏覽(28)
  • 面試題-React(六):React組件和生命周期

    面試題-React(六):React組件和生命周期

    一、React組件 React組件簡(jiǎn)介: React組件是構(gòu)建用戶界面的基本單元。它們將界面拆分成獨(dú)立、可重用的部分,使得代碼更加模塊化、可維護(hù)性更高。React組件可以是函數(shù)組件或類組件,它們接收輸入的數(shù)據(jù)(稱為props)并返回表示用戶界面的React元素。 創(chuàng)建React組件: 在React中

    2024年02月11日
    瀏覽(23)
  • 【React】組件生命周期、組件通信、setState

    【React】組件生命周期、組件通信、setState

    ? 組件化思想的應(yīng)用: ? ? 有了組件化的思想,我們?cè)谥蟮拈_發(fā)中就要充分的利用它。 ? ? 盡可能的將頁(yè)面拆分成一個(gè)個(gè)小的、可復(fù)用的組件。 ? ? 這樣讓我們的代碼更加方便組織和管理,并且擴(kuò)展性也更強(qiáng)。 ? React的組件相對(duì)于Vue更加的靈活和多樣,按照不同的

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

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

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

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

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

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

    2024年02月01日
    瀏覽(23)
  • React中組件通信有哪些方式

    React中組件間的通信有一下幾種情況: ? ? ? ? 父組件向子組件通信,可以通過props方式傳遞數(shù)據(jù);也可以通過ref防暑傳遞數(shù)據(jù); ? ? ? ? 子組件向父組件通信,通過回調(diào)函數(shù)方式傳遞數(shù)據(jù); ????????父組件向后代所有組件傳遞數(shù)據(jù),如果組件層級(jí)過多,通過props的方式傳

    2024年02月14日
    瀏覽(15)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包