首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReactJS -根DOM节点动态添加

ReactJS -根DOM节点动态添加
EN

Stack Overflow用户
提问于 2018-03-17 13:37:17
回答 1查看 268关注 0票数 0

我在遗留应用程序中有一个由jquery控制的选项卡式接口。

我正在将新部件迁移到ReactJS。

其中一个选项卡保存React根DOM节点,我希望在其中显示组件。当选项卡激活时,DOM节点以及选项卡中的所有内容都将通过jquery加载,其中包含html()函数。在这种情况下,React无法找到DOM节点,并出现错误。

如果我在选项卡激活中使用AJAX动态加载React脚本,那么每次加载脚本时,它都会添加一个重复的根组件。

如果只在第一次激活选项卡时加载脚本,它就无法在第二个选项卡激活之前将组件添加到DOM中。

如何处理动态插入的根DOM节点(v16.2)?

请帮帮我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-18 09:08:33

我找到了解决办法。

只需将其写入主组件文件中,就可以从外部源(如jQuery)控制react组件:

代码语言:javascript
复制
function renderComponent() {
  ReactDOM.render(<YourApp />, document.getElementById('your-root-node'));
}

window.initReact = renderComponent;

function unmountComponent() {
  ReactDOM.unmountComponentAtNode(document.getElementById('your-root-node'));
}

window.unmountReact = unmountComponent;

当您知道根节点已经添加到DOM中时,在您的jQuery代码中这样调用它:

代码语言:javascript
复制
initReact();

当您要从DOM中删除根节点时调用它(建议清除状态/任何事件处理程序):

代码语言:javascript
复制
unmountReact();

灵感来源:https://medium.com/@michaelbrazell/invoking-reactdom-render-from-outside-of-react-86c3a3350bd7

谢谢

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49336651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档