在react外部靜態頁面獲取並調用組件中元素綁定的方法

起因

源於掃碼槍應用的後續,由於react好像無法支持oncomm方法,無奈只能繼續使用iframe加載靜態頁面的方式獲取串口數據,這就要求進行父子頁面數據的傳輸。

後續

首先想到使用postMessage方法。在chrome上成功,但在ie上父頁面卻拿不到子頁面傳的數據(原因不太清楚,留個坑,諸位大佬若是知道請不吝賜教)
再想到跨頁面調方法。父頁面調用子頁面方法沒問題,因爲子頁面只是個簡單頁面,方法都綁定在window對象上;子頁面調父頁面元素綁定方法時顯示沒有綁定方法
在這裏插入圖片描述
因爲react中元素的事件綁定方法無法直接在外部獲取。
緊接着,發現react元素中比普通元素多了幾個屬性,使用Object.keys()獲取得到
["__reactInternalInstance$2wxfat8xpfv", “__reactEventHandlers$2wxfat8xpfv”]
在這裏插入圖片描述
在這裏插入圖片描述

然後在__reactEventHandlers$2wxfat8xpfv裏面驚喜的發現了元素的綁定事件,調用成功。
查資料發現__reactEventHandlers$2wxfat8xpfv中$符號後面爲元素在react中的id,即__reactEventHandlers$<id>,因此在調用方法的時候需要正確的屬性名,id不知道該怎麼獲取,這裏用了個笨方法,用正則去匹配,下面簡單附上寫的方法

function getReactMethod(ele){
 	Object.keys(ele).forEach(function(key){
 		if(/^__reactEventHandlers/.test(key)){
 			//TODO
 		}
 	})
 }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章