javascript - 为什么 JavaScrips 仅在加载页面后才起作用?

标签 javascript html reactjs

我有一个 React 应用程序并尝试通过 jQuery 初始化 Materialize js。

index.html

<body>
    <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>

    <script type="text/javascript" src="/jquery-3.4.1.min.js"></script>
    <script type="text/javascript" src="/materialize.min.js"></script>

    <script>
      $(document).ready(function() {
        $(".tabs").tabs();
      });
    </script>
  </body>

问题: 因此,React 呈现“UserProfile”组件,其中包含具体化的“选项卡”。如果我转到 UserProfile 路线,则 javaScript 可以工作,但如果我转到另一个页面并返回到 UserProfile,则 javaScript 不起作用。或者,如果我从另一个页面开始并转到 UserProfile,结果相同,选项卡不起作用。

我检查了 html“Elements”,它那里有那些脚本,它们没有消失(它们实际上应该消失,但以防万一)。

P.S. 我是 React 新手,所以也许这段代码从根本上来说是错误的,我知道在主 html 下添加脚本并不是一个好主意,但即便如此,我认为它应该在至少。或者我是否需要以某种方式将我的脚本添加到组件中?任何帮助都会有所帮助。

最佳答案

JQuery 与 React 无关,$(document).ready 将确保回调在 html 文档完全加载后执行,但不能保证它会等待 react。 render 完成执行,这意味着您的回调在 React 将组件添加到 DOM 之前运行,并且没有找到任何 .tabs

也许您想使用 componentDidMount() 做任何您想做的事情? React 文档:https://reactjs.org/docs/react-component.html#componentdidmount

关于javascript - 为什么 JavaScrips 仅在加载页面后才起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57320517/

相关文章:

javascript - 如何在javascript中从数组中删除重复项

javascript - 更改 HTML5 视频源时黑屏

jquery动画优化

javascript - ReactJs 组件语法,有什么区别?

javascript - 模态中的 gmaps4rails 不会加载全宽

javascript - 如何限制 JSON API WordPress 插件

javascript - 向图像 slider 添加淡入淡出效果

javascript - div 元素上的 touchevent 在 window 元素上工作时不起作用

iframe - 将 iframe 插入到 React 组件中

javascript - ReactJS:无法识别 DOM 属性