默认路由总是在react router中执行

2024-01-03

我正在开发一个项目,其中使用了引人注目的Dash 模板。在这里,我在从 URL 更改路由时遇到一些路由问题。

auth.js

import React, { lazy, Suspense } from "react"
import { Spin } from "antd"
import { Switch, Route, Redirect } from "react-router-dom"
import AuthLayout from "../container/profile/authentication/Index"

const Login = lazy(() =>
  import("../container/profile/authentication/overview/SignIn")
)
const SignUp = lazy(() =>
  import("../container/profile/authentication/overview/SignUp")
)
const ForgetPassword = lazy(() =>
  import("../container/profile/authentication/overview/ForgetPassword")
)
const EmailConfirmation = lazy(() =>
  import("../container/profile/authentication/overview/EmailConfirmation")
)
const VerificationPage = lazy(() =>
  import("../container/profile/authentication/overview/VerificationPage")
)

const NotFound = () => {
  console.log("NOT FOUND")
  return <Redirect to="/" />
}

const FrontendRoutes = () => {
  return (
    <Switch>
      <Suspense
        fallback={
          <div className="spin">
            <Spin />
          </div>
        }
      >
        <Route exact path="/verification" component={VerificationPage} />
        <Route exact path="/email-confirmation" component={EmailConfirmation} />
        <Route exact path="/forgetPassword" component={ForgetPassword} />
        <Route exact path="/signup" component={SignUp} />
        <Route exact path="/" component={Login} />
        <Route component={NotFound} />
      </Suspense>
    </Switch>
  )
}

export default AuthLayout(FrontendRoutes)

App.js

import React, { useEffect, useState } from "react";
import { hot } from "react-hot-loader/root";
import { Provider, useSelector } from "react-redux";
import { ThemeProvider } from "styled-components";
import { BrowserRouter as Router, Redirect, Route } from "react-router-dom";
import { ConfigProvider } from "antd";
import store from "./redux/store";
import Admin from "./routes/admin";
import Auth from "./routes/auth";
import "./static/css/style.css";
import config from "./config/config";
import ProtectedRoute from "./components/utilities/protectedRoute";

const { theme } = config;

const ProviderConfig = () => {
  const { rtl, isLoggedIn, topMenu, darkMode } = useSelector(state => {
    return {
      darkMode: state.ChangeLayoutMode.data,
      rtl: state.ChangeLayoutMode.rtlData,
      topMenu: state.ChangeLayoutMode.topMenu,
      isLoggedIn: state.Authentication.login,
    };
  });

  const [path, setPath] = useState(window.location.pathname);

  useEffect(() => {
    let unmounted = false;
    if (!unmounted) {
      setPath(window.location.pathname);
    }
    // eslint-disable-next-line no-return-assign
    return () => (unmounted = true);
  }, [setPath]);

  return (
    <ConfigProvider direction={rtl ? "rtl" : "ltr"}>
      <ThemeProvider theme={{ ...theme, rtl, topMenu, darkMode }}>
        <Router basename={process.env.PUBLIC_URL}>
          {!isLoggedIn ? <>{console.log("INSIDE PUBLIC")}<Route path="/" component={Auth} /></> : <ProtectedRoute path="/admin" component={Admin} />}
          {isLoggedIn && (path === process.env.PUBLIC_URL || path === `${process.env.PUBLIC_URL}/`) && (
            <Redirect to="/admin" />
          )}
        </Router>
      </ThemeProvider>
    </ConfigProvider>
  );
};

function App() {
  return (
    <Provider store={store}>
      <ProviderConfig />
    </Provider>
  );
}

export default hot(App);

每当我将 URL 更改为另一个路由时,如我上面在前端路由中所述。然后它总是会打印如下控制台语句:

INSIDE PUBLIC
NOT FOUND
INSIDE PUBLIC
NOT FOUND

预期行为:每当我更新 URL 时,它都会根据 switch 情况渲染组件并将其返回

实际行为:每当我更新 URL 时,它都会呈现该组件以及默认组件。我认为 Switch 这里渲染了多个组件,但我不知道为什么。


我刚刚通过移动解决了这个问题Switch里面的标签Suspenseauth.js 文件中的标记。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

默认路由总是在react router中执行 的相关文章

随机推荐

  • 如何在C++中将第一个数字移动到数字的末尾?

    这是代码 include
  • 对密度曲线下方的区域进行阴影处理,以标记最高密度区间 (HDI)

    我认为这应该很简单 但尽管网上有大量信息 我还是迷失了 我的问题 我有一个数据点向量 我想为其绘制密度曲线 然后为曲线下方的区域着色以表示最高密度区间 HDI 当然 我正在努力实现这一目标ggplot2包 特别是qplot 因为我的数据是向
  • Visual Studio 代码显示错误“找不到名称日期”

    我正在开发一个基本的 Angular 项目Visual Studio代码 版本1 19 2 作为我的 IDE 下面的代码运行良好 但 VSC 似乎对此不满意 当我使用时它显示错误new Date or JSON stringify 但最终结
  • 将结构体数组转换为双精度数组[重复]

    这个问题在这里已经有答案了 我将 7 个患者的数据 每个数据包含 19 个特征 合并到一个结构中 如下所示 数据现在位于具有 19 个字段的 7x1 结构中 我需要做什么才能将结构转换为双精度数组 我需要将其用作 SVM 分类器的输入 或者
  • 我可以在 Eclipse 中从构造函数自动生成字段吗?

    当我在 Eclipse 中编码时 我喜欢尽可能地偷懒 所以我经常输入类似这样的内容 myObject new MyClass myParam1 myParam2 myParam3 即使 MyClass 不存在 它的构造函数也不存在 单击几下
  • Symfony2 - 我应该把用户上传的文件放在哪里? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是 Symfony 的新手 我将用户上传的图像放在下面 web bundles mybundle images 目录 但我觉得这不是一个好的做
  • 如何在 Android 市场上发布应用程序更新?

    我已经在 Android 市场上有一个应用程序 现在我想上传该应用程序的更新 我使用相同的包名称创建了新应用程序 我增加了版本代码和名称 我使用相同的密钥库签名 等等 现在我想知道如何发布更新 我是否将更新作为单独的应用程序上传 或者我还能
  • 如何使用 jQuery 读取 CSS 文件

    好的 我有一个包含 jQuery 的 HTML 页面 我有一个 CSS 文件 里面有很多行 我想阅读all来自外部 CSS 文件的给定元素的样式 而不是内联样式 我有以下代码 看起来应该可以工作 var styleProperties va
  • C:检查命令行参数是否为整数?

    签名isdigit int isdigit int c 签名atoi int atoi const char nptr 我只是想检查传递的命令行参数是否是整数 这是 C 代码 include
  • 获取 Magento 中的当前 URL 并显示一些内容

    我正在尝试获取 Magento 中的当前 URL 并显示一些内容 如果我当前位于该页面上 到目前为止 这就是我所做的并且有效 I am in the blog page 但是 我不想在源代码中硬编码URL 因为如果我传输到另一台服务器 我需
  • 写入 JSON 文件时出现阶段失败 Spark FileAlreadyExistsException

    我正在尝试以 JSON 格式将数据帧写入 s3 位置 但是每当执行器任务失败并且 Spark 重试该阶段时 它就会抛出FileAlreadyExistsException A 类似的问题 https stackoverflow com qu
  • 访问和使用数据库中的 .jsf 文件

    使我的 Web 应用程序能够使用数据库中存储的 JSF 文件的最佳方法是什么 我希望能够动态 在运行时 创建新的 JSF 页面 无需重新部署应用程序即可使用该页面 换句话说 我希望将 JSF 页面的大部分存储在数据库中 并希望 JSF 使用
  • 在 P/Invoke 中为固定字符串传递什么?

    假设这个 C 函数 void do something const char str 它将字符串存储在某处稍后参考 此外 我在 C 中有这个签名来调用这个函数 DllImport NativeLib static extern void d
  • Java 中的窗口拖动事件

    我正在尝试在 Java 中实现类似 OS X 抽屉的功能 因此我将一个窗口隐藏在另一个窗口下 但是 当我拖动主窗口 JFrame 时 我需要在它移动到下面的辅助窗口 JWindow 时发送更新 所以它会是这样的 JFrame JWidow
  • 使用 laravel forge 永远运行 artisan 命令?

    有人可以建议我如何让我的自定义 artisan 命令与守护进程一起永远运行吗 我看过很多关于队列的教程 但它并不完全适合 我正在尝试使用 pubnub 的 php 库完成 订阅 这似乎是最好的方法 除非我错过了一些东西 提前致谢 如果您从命
  • 如何使用 LDAP 组成员身份同步设置 TeamCity [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 这是一个简短的指南 帮助您进行 TeamCity 的 LDAP 设置 在我设法让同步运行之前 我个人经历了相当多的挣扎 默认配置文件有
  • 是否可以在 MATLAB 中实现以下内容?

    给定 5x5 的图像 I i j 4 i j 当 i j 0 1 2 3 4 时 以及以下 Prewitt 运算符 1 0 1 1 0 1 1 0 1 1 1 1 0 0 0 1 1 1 如何计算梯度 幅度和方向 使用 Prewitt 算子
  • ASP.NET Core - 如何注入 IOptionsMonitor

    我怎样才能注射IOptionsMonitor
  • 将 php 与 bigcommerce api 集成

    我是 Bigcommerce Api 整个概念的新手 但我的 php 编程很好 如果我要将我可能创建的 php 代码与 bigcommerce api 集成 我无法确定从哪里开始 我的文件去哪里 他们具体是如何互动的 在 Bigcommer
  • 默认路由总是在react router中执行

    我正在开发一个项目 其中使用了引人注目的Dash 模板 在这里 我在从 URL 更改路由时遇到一些路由问题 auth js import React lazy Suspense from react import Spin from ant