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

溫馨提示×

溫馨提示×

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

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

React如何實現無嵌套組件通信

發布時間:2022-03-28 11:15:00 來源:億速云 閱讀:242 作者:小新 欄目:web開發

這篇文章將為大家詳細講解有關React如何實現無嵌套組件通信,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

兄弟(無嵌套)組件通信

當兩個組件互不嵌套,處在同個層級或者不同層級上,他們之間要進行通信,有以下幾種常用方法

1、某個組件先將值傳到同一個父組件,然后在通過父組件傳給另外一個組件,用到父子組件傳值

2、使用緩存sessionStorage、localStorage等

3、如果兩個組件之間存在跳轉,可以使用路由跳轉傳值,附上詳細用法

React學習筆記 -- 組件通信之路由傳參(react-router-dom)_前端菜小白leo的博客-CSDN博客

4、event(發布--訂閱)

首先,安裝event

npm install event -save

新建一個event.js

import { EventEmitter } from 'events';
export default new EventEmitter();

然后另兩個組件處于同層級(不同個父組件或者不同層級都可以)

import React from 'react';
import Grandson from './Grandson';
import GrandsonOther from './GrandsonOther';
 
class Children extends React.Component {
  render(){
    return (
      <div>
        <Grandson></Grandson>
        <GrandsonOther></GrandsonOther>
      </div>
    )
  }
}
 
export default Children

組件一,導入event,在componentDidMount階段添加監聽addListener(訂閱),在componentWillUnmount移除監聽removeListener,事件名稱與組件二中emit一致。

import React from 'react';
import event from '../event';
import { Button } from 'element-react'
 
class Grandson extends React.Component {
  constructor(props) {
	super(props);
    this.state = {
      msg:''
    }
    this.toOther = this.toOther.bind(this)
  }
  toOther(){
    event.emit('eventMsg','通過evnet傳過來的值')
  }
  render(){
    return (
      <div style={{backgroundColor:'#13ce66',padding:'10px',width:'200px',margin:'auto',marginTop:'20px'}}>
        <p>組件二</p>
        <span style={{color:'blue'}}>{this.state.msg}</span>
        <div><Button onClick={this.toOther}>event傳值</Button></div>
      </div>
    )
  }
}
 
export default Grandson

組件二,導入event,按鈕綁定方法,使用event.emit觸發(發布)事件。

import React from 'react';
import event from '../event';
import { Button } from 'element-react'
 
class Grandson extends React.Component {
  constructor(props) {
	super(props);
    this.state = {
      msg:''
    }
    this.toOther = this.toOther.bind(this)
  }
  toOther(){
    event.emit('eventMsg','通過evnet傳過來的值')
  }
  render(){
    return (
      <div style={{backgroundColor:'#13ce66',padding:'10px',width:'200px',margin:'auto',marginTop:'20px'}}>
        <p>組件二</p>
        <span style={{color:'blue'}}>{this.state.msg}</span>
        <div><Button onClick={this.toOther}>event傳值</Button></div>
      </div>
    )
  }
}
 
export default Grandson

點擊按鈕,組件二發布事件,組件一監聽(訂閱)事件,更新內容。(如果交換發布者訂閱者身份,寫法一致)

React如何實現無嵌套組件通信

React如何實現無嵌套組件通信

注意:如果兩個組件使用event進行通信,確保發布訂閱的事件名稱一致,如上例中 eventMsg

關于“React如何實現無嵌套組件通信”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

红河县| 奉贤区| 青川县| 会东县| 益阳市| 固始县| 大洼县| 南和县| 阳高县| 韩城市| 内黄县| 麻阳| 曲阜市| 通山县| 景泰县| 防城港市| 扶余县| 教育| 德惠市| 高淳县| 垫江县| 册亨县| 温宿县| 丰镇市| 上栗县| 仙游县| 依安县| 辽中县| 临夏市| 纳雍县| 常山县| 佛教| 曲水县| 临邑县| 洞头县| 武川县| 凉山| 英德市| 浮梁县| 奎屯市| 利辛县|