首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

react-router-dom重定向不是重定向到我想要重定向的组件,而是重定向到不同的路径

在使用 react-router-dom 进行重定向时,如果遇到重定向路径不符合预期的情况,可能是由于以下几个原因导致的:

基础概念

react-router-dom 是 React 应用中用于路由管理的库。它提供了 <Redirect> 组件和 useHistory 钩子等工具来实现页面的重定向。

可能的原因及解决方法

  1. 路径配置错误
    • 确保你在 <Switch><Route> 中正确配置了目标路径。
    • 确保你在 <Switch><Route> 中正确配置了目标路径。
  • 重定向顺序问题
    • <Redirect> 应该放在 <Switch> 的最后,否则可能会被其他更具体的路由覆盖。
    • <Redirect> 应该放在 <Switch> 的最后,否则可能会被其他更具体的路由覆盖。
  • 动态重定向逻辑错误
    • 如果你在组件内部使用 useHistory 进行动态重定向,确保逻辑正确。
    • 如果你在组件内部使用 useHistory 进行动态重定向,确保逻辑正确。
  • 浏览器缓存问题
    • 有时候浏览器缓存可能导致重定向看起来不正确。尝试清除缓存或使用无痕模式查看效果。
  • 服务器配置问题
    • 如果是部署在生产环境,确保服务器配置正确处理了前端路由(例如,使用 historyApiFallback 在开发环境中)。

示例代码

以下是一个完整的示例,展示了如何正确设置重定向:

代码语言:txt
复制
import React from 'react';
import { BrowserRouter as Router, Route, Switch, Redirect } from 'react-router-dom';

function Home() {
  return <h2>Home</h2>;
}

function About() {
  return <h2>About</h2>;
}

function App() {
  return (
    <Router>
      <Switch>
        <Route exact path="/" component={Home} />
        <Route path="/about" component={About} />
        <Redirect from="/old-about" to="/about" />
      </Switch>
    </Router>
  );
}

export default App;

应用场景

  • 旧页面迁移:当网站结构发生变化时,可以使用重定向将旧页面指向新页面。
  • 权限控制:用户访问某些页面前需要验证权限,未通过验证时重定向到登录页面。
  • 表单提交后跳转:用户在提交表单后,可以重定向到一个确认页面。

通过检查上述可能的原因并进行相应的调整,应该能够解决重定向不按预期工作的问题。如果问题依然存在,建议检查控制台是否有相关错误信息,或者使用调试工具跟踪路由变化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何将HTTP重定向到Apache上的HTTPS

本教程将向您展示如何在Linux中将HTTP重定向到Apache HTTP服务器上的HTTPS 。...在为您的域设置Apache HTTP到HTTPS重定向之前,请确保已安装SSL证书,并在Apache中启用mod_rewrite 。 有关如何在Apache上设置SSL的更多信息,请参阅以下指南。...重定向到Apache上的HTTPS 对于这种方法,确保启用了mod_rewrite ,否则在Ubuntu / Debian系统上启用它。...将HTTP重定向到Apache虚拟主机上的HTTPS 另外,要强制所有Web流量使用HTTPS ,您还可以配置虚拟主机文件。...通常,启用SSL证书时,虚拟主机配置有两个重要部分; 第一个包含非安全端口80的配置 。 第二个是安全端口443 。 要将HTTP重定向到您网站所有页面的HTTPS,首先打开相应的虚拟主机文件。

4.5K20

dotnet core 不自动从 https 到 http 的 302 重定向

https 链接,且此链接返回 302 跳转到一个 http 链接上,那使用 HttpClient 将不会自动跳转,而是返回 302 的状态码,且在 Header 的 Location 上写明了后台返回的...http 链接 这是 dotnet core 的设计如此,可以通过本文的参考看到大佬们的讨论 由于从 https 跳转到 http 在大部分时候来说,都是十分诡异的行为。...默认不要让 HttpClient 帮助自动跳转也是十分符合预期的行为 如果自己明确知道没有问题,那就自己加上跳转的代码吧 如以下的例子代码,先判断 StatusCode 是 Redirect 然后拿 Headers.Location...,是一个很合理的设计。...如果明确知道后台想要如此行为,最好先去将后台的伙伴打一顿,如果打不过,再考虑按照以上代码的方式更改

1.5K30
  • 将make的输出(标准输出标准错误输出)重定向到文件 _

    方式 描述符 含义 stdin 0 标准输入 stdout 1 标准输出 stderr 2 标准错误输出 1.想要把make输出的全部信息,输出到某个文件中 最常见的办法就是:make xxx > build_output.txt...此时默认情况是没有改变2=stderr的输出方式,还是屏幕,所以,如果有错误信息,还是可以在屏幕上看到的。...,还是会输出到屏幕上,你还是可以在屏幕上看到的。...相应地,由于2=stderr没有变,还是屏幕,所以,那些命令执行时候输出的错误信息,还是会输出到屏幕上,你还是可以在屏幕上看到的。...4.想要把正常输出信息和错误信息输出到分别的文件中,可以用: make xxx 1> build_output_normal.txt 2>build_output_error.txt 即联合使用了1和2

    5.1K20

    React Router入门指南(包括Router Hooks)

    } /> ); } 然后,将其添加到我们要呈现内容的位置。路线组件具有多个属性。但是在这里,我们只需要路径和渲染。...在某些情况下,提供这样的路由是完全可以的,但请想象一下,当我们需要处理真实组件时,使用render可能不是正确的解决方案。 那么,我们该如何显示一个真实的组件呢?...,而是加载Home组件。...重定向到另一个页面 React Router还有另一个名为Redirect的组件,正如您猜到的,它可以帮助我们将用户重定向到另一个页面。...重定向到404页面 要将用户重定向到404页面,您可以创建一个组件来显示它,但是为了使事情简单起见,我将仅显示带有render的消息。

    12K20

    React Redirect的使用

    Redirect的概述Redirect组件用于在路由匹配时进行页面重定向。当某个路由匹配成功时,Redirect组件会将用户重定向到指定的URL。...使用Redirect组件可以实现以下功能:页面重定向:在路由匹配时将用户重定向到指定的URL。...在示例中,我们定义了两个Redirect组件:第一个Redirect组件指定了从/home路径到根路径/的重定向。当用户访问/home时,会被重定向到根路径/,即Home页面。...第二个Redirect组件指定了从任意路径到/404路径的重定向。当用户访问任意路径时,都会被重定向到/404路径,即NotFound页面。...通过使用Redirect组件,我们可以实现页面的重定向功能,将用户导航到指定的URL。重定向属性Redirect组件支持以下属性:from: 指定要重定向的源路径。to: 指定要重定向的目标路径。

    98110

    .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题

    当你的项目中多个不同的项目以及不同的依赖存在不同的依赖程序集时,可能会因为依赖于不同版本的程序集而产生冲突。...而绑定重定向可以帮助解决不同程序集的依赖版本不同的问题,使整个程序使用统一个版本的 dll 来运行整个应用程序。 然而,如果我们就是需要使用一个分离的不同版本,那么我们就需要禁用掉自动生成绑定重定向。...阅读本文全文是了解更多与绑定重定向此场景相关的知识。 绑定重定向 从 .NET Framework 4.5.1 开始到后面的 .NET Core 所有版本,编译器会自动向你的程序集中插入绑定重定向。...引用同名但不同版本的 dll 绑定重定向多数时候都是在帮助我们解决依赖问题,然而我们总有一些时候不是按照常规的方式来使用依赖,例如下文这样的方式: 引用不用版本dll - dang13579的专栏 -...禁用绑定重定向 如果你的项目从 .NET Framework 4.5 或者更早版本升级到 .NET Framework 4.5.1 或者 .NET Core 的版本,或者 csproj 的格式升级到了新的基于

    1.2K40

    React第三方组件1(路由管理之Router的使用②多层级跳转及重定向)

    1、React第三方组件1(路由管理之Router的使用①简单使用)---2018.01.22 2、React第三方组件1(路由管理之Router的使用②多层级跳转及重定向)---2018.01.23...3、React第三方组件1(路由管理之Router的使用③传参)---2018.01.24 4、React第三方组件1(路由管理之Router的使用④按需加载-上)---2018.01.25 5、React...第三方组件1(路由管理之Router的使用⑤按需加载-下)---2018.01.26 开发环境:Windows 8,node v8.9.1,npm 5.5.1,WebStorm 2017.2.2 路由下面还有路由...今天来讲下多层级理由的实现及如何重定向!...我们希望他默认选中demo2-1,也就是重定向到 demo2-1 我们优化下代码: 引入 Redirect import {Route, NavLink, Redirect} from 'react-router-dom

    1.2K40

    LInux上清空或删除文件的5中方法1. 清空文件通过重定向到Null2. 清空文件使用“true”命名重定向3. Empty File Using catcpdd utilities with

    偶尔,在Linux终端在处理文件,你可能想要清空的内容文件而不打开使用任何Linux命令行编辑器。这该如何实现呢?在本文中,我们将在一些有用的命令帮助下通过几个不同的方法清空文件内容。...清空文件通过重定向到Null 一个最简单的清空文件内容的方法是如下使用shell重定向null(不存在的对象)到文件 # > access.log 在Linux中通过重定向清空大文件 2....扩展一下,您可以通过使用** cat ** 命名重定向** /dev/null ** 的输出内容到文件实现清空文件内容。...# echo -n "" > access.log 清空文件使用Null重定向 5.清空文件使用 truncate 命名 truncate 命令有助于缩小或扩展文件尺寸到定义的大小。...但这些可能不是唯一切实可行的方法这样做。

    4.4K50

    React路由学习

    Link} from 'react-router-dom' 3.编写两个无状态的路由组件 // 声明路由组件 一个func 相当于是一个路由组件  // 这里是无状态路由的写法 实际工作中会把路由组件单独的写成一个...'>首页                          {/* exact 为精准定位 必须为/ 才能进行匹配                  Route 为路径的指引...                component 为上面绑定的组件                 path 为路径             */}             的值可以在声明周期中使用this.setState({}),前提是设置的数据需要在state中声明好 4.路由的重定向 引入RediRect import {Link,Redirect... } from 'react-router-dom' 编程式重定向 this.props.history.push('/home/') 标签重定向 在render最外层标签中写入 <Redirect to

    78710

    解决前后端分离Vue项目部署到服务器后出现的302重定向问题

    奇怪的是这个问题在本地开发环境并没有,而是部署到了服务器之后才会有。 接口无法加载响应数据 接口重定向标识Location显示需要重新登录认证,而且这个请求还是GET请求。...问题原因定位 出现这个问题很显然是当前用户在Spring Security中丢失了认证信息,奇怪的是本地开发环境并不会出现这种问题,原因是我本地开发环境的前端用的是Vite启动的前端服务,而部署到服务器时却是...通过jwt token认证相当于spring security需要对用户的每次请求都先认证一次,如果用户的认证信息没有保存到SecurityContext类中的authentication中就会在调用非登录接口获取数据时出现这种重定向到登录页面的问题...对于白名单中的请求部署到服务器后是不会有这种302重定向到登录页面的问题。因为这些白名单请求在Spring Security中也进行了放行, 源码如下。...302重定向问题 第一种就是在Spring Security的配置类的configure(HttpSecurity)方法中对出现302重定向的请求进行放行,向放行白名单请求一样进行处理。

    4K20
    领券