React組件之間的通信方式


一、通過props傳遞

  • 共同的數據放在父組件上, 特有的數據放在自己組件內部(state)
  • 通過props可以傳遞一般數據和函數數據, 只能一層一層傳遞,即單向單層傳遞
  • 一般數據

          父組件傳遞數據給子組件-->子組件讀取數據

  • 函數數據

         子組件傳遞數據給父組件-->子組件調用函數

總結:

父子組件之間的通信,使用props屬性。其中只能由父組件傳遞到子組件(單向)。如果子組件向要傳遞數據給父組件,只能通過回調函數的方式進行。

兄弟組件不能直接通信,只能通過共有的父組件間接完成通信。

使用props進行通信適用於組件的層級不是很多,傳遞的數據不是很復雜的情況。

二、消息訂閱(subscribe)-發布(publish)機制

接收數據方為消息訂閱(subscribe)者,數據發布(產生)方為消息發布(publish)者。

這種方式可以跨層級進行通信。使得任意兩個組件通信成為可能。

在JavaScript中,使用第三方庫 PubSubJS完成消息訂閱-發布機制。

文檔: https://github.com/mroderick/PubSubJS

PubSubJS使用方法:

1. 安裝

npm install pubsub-js --save

2. 使用

// 引入
import PubSub from 'pubsub-js'

 

// 訂閱
PubSub.subscribe('delete', function(msg, data){ });

 

// 發布消息
PubSub.publish('delete', data)

主要API

PubSub.subscribe(topic, callback)

訂閱消息

參數:

topic

消息名稱

callback

收到消息時的回調處理函數,接收兩個參數:

msg

消息名稱

data

發布者發出的數據

返回值

返回一個token,可以用於取消訂閱

 

PubSub.publish(topic, data)

發布消息

參數:

topic

消息名稱,消息發布者和訂閱者所定義的消息名必須一樣,否則接收不到消息

data

發布者發出的數據

 

PubSub.unsubscribe(token)

用來取消消息訂閱

參數:

token

subscribe()的返回值

三、Redux

這個就不用過多介紹了,大名鼎鼎的redux,一個獨立的專門用於狀態管理的庫。結合React能夠完成大型復雜的項目。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM