静态网站模板转换为React项目的问题

问题描述 投票:0回答:2

我是reactjs新手。首先,我总结一下发生在我身上的事情。当我尝试在react-router-dom中使用useNavigate()移动到另一个页面时,该页面中没有触发一些点击事件。但是当刷新该页面时,JavaScript 运行良好。我想使用 metronic 静态网站模板制作 React 网站(看起来像medium.com)。所以我在公共文件夹的index.html文件中添加了所需的css和js文件,如下所示。

    ...
    <link href="%PUBLIC_URL%/assets/plugins/global/plugins.bundle.css" rel="stylesheet" type="text/css" />
    <link href="%PUBLIC_URL%/assets/css/style.bundle.css" rel="stylesheet" type="text/css" />
    <title>React App</title>
   </head>
   <body>
    <div id="root"></div>
   </body>  
  <script src="%PUBLIC_URL%/assets/plugins/global/plugins.bundle.js"></script>
  <script src="%PUBLIC_URL%/assets/js/scripts.bundle.js"></script>
  <script src="%PUBLIC_URL%/assets/plugins/custom/fullcalendar/fullcalendar.bundle.js"></script>
  <script src="%PUBLIC_URL%/assets/js/custom/widgets.js"></script>
  <script src="%PUBLIC_URL%/assets/js/custom/apps/chat/chat.js"></script>
  <script src="%PUBLIC_URL%/assets/js/custom/modals/create-app.js"></script>
  <script src="%PUBLIC_URL%/assets/js/custom/modals/upgrade-plan.js"></script>

我制作了一个登录和仪表板页面。成功登录后,页面导航至仪表板页面。 (为了简单起见,我省略了不必要的代码。)

...
import { useNavigate } from "react-router-dom";
...
const Login =() => {
 const navigate=UseNavigate();
 useEffect(() => {
  dispatch(login(credential))
  .unwrap()
  .then(()=>{
    navigate("/dashboard")});

但是在仪表板页面中,来自 Metronic 的原始 javascript 不起作用。如果我刷新页面,那么 javascript 就可以正常工作。 (点击按钮时的下拉事件) plugins.bundle.js和scripts.bundle.js负责点击事件处理,它们已经包含在页面中。 也许我在react中使用Metronic模板的方法不正确。请解决这个问题。我尝试了一整天,但找不到解决方案。预先感谢。

reactjs react-navigation metronic
2个回答
0
投票

终于我解决了这个问题。对于那些遇到这个问题的人,我将解释根本原因和解决方案! 所有 Metronic 引导菜单组件都会自动初始化,但有时像我一样应该初始化实例。在我的问题中,我无法触发下拉菜单事件,因为导航到仪表板(重新渲染)时,不会自动初始化。 因此,在 useEffect 挂钩中,只需像下面这样初始化 KTMenu 即可。

KTMenu.createInstances();

对于类似的情况,请查看本手册metronic文档如何初始化实例,然后在useEffect钩子中添加初始化代码。


0
投票

你能解决这个问题吗?我正在这里做同样的事情,脚本加载得很好,但它仍然没有拾取用于引导样式的 kt 效果。

© www.soinside.com 2019 - 2024. All rights reserved.