Reactjs 对象没有键__reactInternalInstance



我从另一个stackoverflow主题(调用渲染外的儿童方法(复制了此功能,并且它在一个小测试项目中起作用

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

失败项目有效,没有错误,消息组件也有效(可以从内部调用以显示消息(

我真的不知道为什么会失败(键丢失(,希望你们中的某些人会做。

如果您使用的是使用React 17,则可以尝试" __ reactFiber"而不是" __ reactInternalinstance"。似乎React在React 17中更改了此属性名称。

我检查了package.js,并注意到了所有模块的不同版本。因此更新了它们(react/react-dom/webpack/babel-loader(然后它起作用:(

相关内容

  • 没有找到相关文章

最新更新