react中元件之間的資料傳送,交流,最簡單,通用,好用的方法.
該方法最大的方便就是: 模組a 發生一個事件 ,之後可以主動 觸發模組b中事件改變模組b的state和props等,簡直不要太方便.
如果你在糾結react模組之間怎麼實現傳值的話,不用再找其他了,就是這個方法了親測好用,很通用.
很詳細用法見http://taobaofed.org/blog/2016/11/17/react-components-communication/ 中 兄弟元件間通訊 部分
以下是經本人理解後的核心部分,方便上手。(簡單demo如下)
模組 a 中寫 var data = "hello,money"; eventProxy.trigger("test", data);
模組 b 中寫 eventProxy.on("test", (data)=>{ console.log(data) });
只要模組a中的語句每次被觸發執行時後都會觸發模組b中語句列印出傳遞過來的data值.
- on、one:on 與 one 函式用於訂閱者監聽相應的事件,並將事件響應時的函式作為引數,on 與 one 的唯一區別就是,使用 one 進行訂閱的函式,只會觸發一次,而 使用 on 進行訂閱的函式,每次事件發生相應時都會被觸發。
- trigger:trigger 用於釋出者釋出事件,將除第一引數(事件名)的其他引數,作為新的引數,觸發使用 one 與 on 進行訂閱的函式。
- off:用於解除所有訂閱了某個事件的所有函式。
---------下面的程式碼可以單獨放在一個檔案中,用script引入,或important入即可使用eventProxy--------------
// eventProxy.js ;const eventProxy = { onObj: {}, oneObj: {}, on: function(key, fn) { if(this.onObj[key] === undefined) { this.onObj[key] = []; } this.onObj[key].push(fn); }, one: function(key, fn) { if(this.oneObj[key] === undefined) { this.oneObj[key] = []; } this.oneObj[key].push(fn); }, off: function(key) { this.onObj[key] = []; this.oneObj[key] = []; }, trigger: function() { let key, args; if(arguments.length == 0) { return false; } key = arguments[0]; args = [].concat(Array.prototype.slice.call(arguments, 1)); if(this.onObj[key] !== undefined && this.onObj[key].length > 0) { for(let i in this.onObj[key]) { this.onObj[key][i].apply(null, args); } } if(this.oneObj[key] !== undefined && this.oneObj[key].length > 0) { for(let i in this.oneObj[key]) { this.oneObj[key][i].apply(null, args); this.oneObj[key][i] = undefined; } this.oneObj[key] = []; } } }; |
參見:http://taobaofed.org/blog/2016/11/17/react-components-communication/
相關文章
- react元件與元件之間的資料傳遞React元件
- vue元件之間的資料傳遞Vue元件
- 玩轉 React(七)- 元件之間的資料共享React元件
- 關於Activity之間傳送資料
- 修改SQL Server資料庫表的建立時間最簡單最直接有效的方法SQLServer資料庫
- 微信小程式父子元件之間的資料傳遞微信小程式元件
- React - 元件之間的通訊React元件
- 用react-redux實現react元件之間資料共享ReactRedux元件
- EXCEL資料上傳到SQL SERVER中的簡單實現方法ExcelSQLServer
- android 中Service 和activity之間的資料傳遞的幾種方法Android
- Vue.js 元件之間傳遞資料Vue.js元件
- 最簡單最實用的ajax(一)基礎通用ajax
- 簡單的在兩個activity中傳遞資料
- React之元件(component)之間的通訊React元件
- 資料庫的最簡單實現資料庫
- PHP 傳送GET 和 POST資料的方法分析PHP
- react-fetch資料傳送請求React
- MySQL傳輸表空間的簡單使用方法MySql
- 深入解析React資料傳遞之元件內部通訊React元件
- Vue元件之間的資料傳遞(通訊、互動)詳解Vue元件
- 探索 React 元件之間的生命週期React元件
- React中元件之間通訊的方式React元件
- php中兩個網頁之間的變數傳送 (轉)PHP網頁變數
- Java Mail 郵件傳送(二):簡單封裝的郵件傳送JavaAI封裝
- Vue元件間傳遞資料Vue元件
- Vue - 元件之間的傳值方式Vue元件
- iOS-Widgets小元件-Today Extension和主App之間的簡單資料共享iOS元件APP
- React中useEffect的簡單使用React
- 用最簡單的方法複製或遷移Oracle資料庫Oracle資料庫
- vue父子元件之間傳值以及方法呼叫Vue元件
- 最簡單的JAVA連線資料庫Java資料庫
- SAP UI5 Web Component裡最簡單的React列表控制元件的用法UIWebReact控制元件
- jmeter之傳送json資料的post請求JMeterJSON
- 用 React 做出好用的 Switch 元件React元件
- 父子元件之間的傳值問題元件
- Vue.js 元件之間的傳值Vue.js元件
- React圖片上傳元件react-fileupload的使用方法React元件
- react之元件資料掛在方式React元件