2017-06-29 59 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) 然后它工作:)