2017-06-29 81 views
1

我從另一個計算器主題複製此功能(打電話給孩子的方法外渲染),它在一個小的測試項目工作reactjs對象不具有關鍵__reactInternalInstance

window.FindReact = function(dom) { 
    for (var key in dom) { 
    if (key.startsWith("__reactInternalInstance$")) { 
     var compInternals = dom[key]._currentElement; 
     var compWrapper = compInternals._owner; 
     var comp = compWrapper._instance; 
     return comp; 
    } 
    } 
    return null; 
}; 

我做了一個類,顯示一個消息框在屏幕中間(淡入;顯示味精幾秒鐘;然後淡出)

我可以調用該方法直接顯示子組件的消息,這要歸功於上述功能。 所以一切都很好。

然後我將該對象(messagebox)複製到我的主項目並將上面的函數複製到父對象。 而當我打電話時,沒有鑰匙...以及不是我正在尋找的鑰匙

我列出了工作和失敗項目的鑰匙。所有按鍵都除了第一個相同的(這是在失敗項目缺失)

key=__reactInternalInstance$bv23g7yipka 

的失敗項目的工作,沒有錯誤,也該郵件組件的工作原理(可從內來電顯示信息)

我真的不知道爲什麼這會失敗(關鍵是缺少),希望你們中的一些人做。

回答

0

我檢查了package.js並注意到了所有模塊的不同版本。 因此更新了它們(react/react-dom/webpack/babel-loader) 然後它工作:)