【问题标题】:React -- remove dom elements created by an external CDNReact -- 移除外部 CDN 创建的 dom 元素
【发布时间】:2022-02-04 22:03:15
【问题描述】:

我正在建立一个作品集来展示我创作的作品。它包括一些来自 FreeCodeCamp 的根据测试规范构建的小项目。我想包含测试,以便查看代码的人可以看到测试。

当您将 cdn 脚本嵌入到任何地方托管的 react 应用程序中的 index.html 文件中时,它们可以正常工作(即使 React 不希望外部力量操纵 DOM)。这将安装一个可以展开的汉堡菜单,您可以选择要运行的测试。 请注意,始终显示此汉堡包。

但是,我不想总是有这个汉堡菜单,因为我想要显示的一些内容是页面的样式。我正在尝试等待并插入脚本标签,直到按下按钮。

如果我按顺序点击添加然后删除按钮,我可以成功显示和删除汉堡菜单,但我知道在 React 设计中我做错了。这一点很明显,如果你连续两次点击 add to dom 按钮,它就不会被删除。另外,我可以第一次运行测试套件。但是如果删除汉堡包并重新添加并尝试运行测试,控制台会出现错误。

我的问题是:如何在适当的“React”设计中正确添加/删除 cdn 脚本元素(它将自动添加 dom 元素(汉堡包)?我在想那个解决方案在于 useEffect、useRef 或 useState,但我在 React 中是“绿色”的,当我研究时,我仍然无法设计出有效的解决方案。

我将代码放在沙盒中。要重现问题,只需单击显示汉堡包按钮,然后隐藏汉堡包按钮,然后再次显示并尝试运行测试。或者连续点击多次显示。

任何有关如何解决此问题的提示将不胜感激。这个问题方式超出了我的小经验。

Link to Code Sandbox

【问题讨论】:

    标签: javascript reactjs react-hooks cdn react-dom


    【解决方案1】:

    所以我自己想通了。在 React 中,通过外部 CDN 安全地使加载到 DOM 的元素出现和消失就像 CSS 一样简单。

    我刚刚使用 CDN 脚本标签将该项目添加到 DOM。然后我可以更改display:nonevisibility: hidden

    诀窍是先加载 CDN 脚本,然后将其隐藏。

    我遇到了一个问题,因为我尝试了添加 CDN 脚本标签、删除并再次添加的错误方法。

    【讨论】:

      猜你喜欢
      • 2014-01-24
      • 2019-09-12
      • 2012-02-08
      • 2013-02-28
      • 2015-08-05
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      相关资源
      最近更新 更多