亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

React 組件間怎么實現通信

發布時間:2021-08-12 14:22:09 來源:億速云 閱讀:139 作者:Leah 欄目:web開發

本篇文章給大家分享的是有關React 組件間怎么實現通信,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

父子組件通訊

通訊手段

這是最常見的通信方式,父組件只需要將子組件需要的props傳給子組件,子組件直接通過this.props來使用。

通訊內容

更多要提的是如何合理的設置子組件的props,要想將子組件設計成一個復用性強的通用組件,需要將能夠復用的部分抽象出來,抽象出來的props有兩種形成,一種是簡單的變量,另一種是抽象出來處理某種邏輯函數。

以Header 組件為例

React 組件間怎么實現通信

//HeaderBar.jsx 子組件

import React, { Component } from 'react';

class Header extends Component {
  constructor() {
    super();
    this.handleClick = (e) => {
      console.log(this)
    }
  }

  renderLeftComponent() {

    let leftDOM = {};
    if (this.props.renderLeftComponent) {
      return this.props.renderLeftComponent();
    }

    if (this.props.showBack) {
      let backFunc = this.props.onBack || this.goBack;
      leftDOM = (<a onClick={backFunc.bind(this)}><i className="icon left-icon icon-left-arrow"></i></a>);
    }
    return leftDOM;
  }
  

  renderRightComponent() {
    if (this.props.renderRightComponent) {
      return this.props.renderRightComponent();
    }
  }

  goBack() {
    alert("返回上一頁")
  }

  render() {
    return (
      <header className="header-bar">
        {this.renderLeftComponent()}
        <span>{this.props.title || '滴滴'}</span>
        {this.renderRightComponent()}
      </header>
    );
  }
}

export default Header;

//父親組件部分代碼App.jsx
import HeaderBar from "./components/Header";

let leftIcon = function () {
 return (
  <a><i className="icon left-icon icon-left-haha"></i>左邊按鈕</a>
 )
}
class App extends Component {

 render() {
  return (
   <div className="App">
    <HeaderBar title="滴滴打車" renderLeftComponent={leftIcon} />
   </div>
  );
 }
}

子父組件通訊

父-子組件通信的手段是通過子組件的props是子組件用父組件的東西,子-父組件通信,是父組件用子組件的東西,暫時了解的兩種方法

利用回調函數

父組件通過props傳遞一個方法給子組件,子組件通過props方法將子組件數據傳遞給父組件

利用ref

父組件通過refs調用子組件的屬性

跨級組件通信

在React中當一個屬性反復使用并且存在與好幾個子組件中的時候,這個時候我們如果通過props一級一級傳遞的話可以實現多層級訪問,但是這樣出現一個問題就是會使代碼非常混亂,在React中國年,我們還可以使用 context 來實現跨級父子組件間的通信;

在react中context稱為蟲洞

// Component 父級
class parentComponent extends React.Component {
  
  // add the following property
  static childContextTypes = {
    color: React.PropTypes.string
  }
  
  // 添加下面方法
  getChildContext() {
    return {
      color: "#f00"
    }
  }
  
  render() {
    <div>
      <Child1 />
    </div>
  }
}


// Component Child1
class Child1 extends React.Component {
  // 添加下面屬性
  static contextTypes = {
    color: React.PropTypes.string
  }
  
  render() {
    <div>{this.context.color}</div>
  }
}

同級組件通信

同級組件之間的通信還是需要通過父組件作為中介,利用多次父-子組件通信,項目中將需要傳遞的數據放在了父組件的state中,變動時可以自動的同步傳遞。

以上就是React 組件間怎么實現通信,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

周口市| 宁陕县| 旅游| 新津县| 新龙县| 平果县| 弥渡县| 布尔津县| 昭通市| 收藏| 甘孜| 澄江县| 宜兴市| 商洛市| 中卫市| 高安市| 班戈县| 石景山区| 泰和县| 古蔺县| 津南区| 康保县| 武定县| 会东县| 华坪县| 乌拉特中旗| 贵州省| 广河县| 仪陇县| 无棣县| 南召县| 邢台县| 井冈山市| 清涧县| 曲靖市| 上饶县| 扶余县| 桦甸市| 阳西县| 江都市| 高要市|