从 HashRouter 中删除 #

2024-04-24

我在用着react-router-dom对于我的路由,由于我也在使用 GitHub Pages,所以我需要使用HashRouter in my Router.jsx like so

import React from 'react';
import { HashRouter as Router, Route, Switch } from 'react-router-dom';

import Home from './Home';
import Customer from './Customer';

const MyRouter = () => (
  <Router>
    <Switch>
      <Route path="/customer" component={Customer} />
      <Route path="/" component={Home} />
    </Switch>
  </Router>
);

export default MyRouter;

In my Home.jsx组件我已经像这样定义了我的 propTypes

Homepage.propTypes = {
  history: PropTypes.shape({ // set by react-router
    push: PropTypes.func.isRequired,
  }).isRequired,
};

我的问题是每次我得到一个#在我的 URL 中,我想知道为什么它一直存在,为什么我的本地主机没有#将我重定向到相同的 URL,但使用#(就像如果我去http://localhost:4000/myApp/ http://localhost:4000/myApp/它会将我重定向到http://localhost:4000/myApp/#/ http://localhost:4000/myApp/#/)。我想摆脱它以进行跟踪。我尝试过使用BrowserRouter但它不起作用,以及路由器的历史参数,例如history={createHashHistory({ queryKey: false })} or history={browserHistory}.

非常感谢(对我的英语感到抱歉)


由于客户端 React 应用程序的前端性质,路由有点麻烦。两个主要路由器选项的功能如下:

HashRouter在 URL 中使用哈希符号,这会导致服务器请求中忽略所有后续 URL 路径内容(即,您发送“www.mywebsite.com/#/person/john”,服务器会获取“www.mywebsite.com”) ”。结果服务器会返回预#URL 响应,然后是帖子#路径将由客户端反应应用程序解析来处理。

BrowserRouter不会附加#但是,当您尝试链接到页面或重新加载页面时,会产生问题。如果显式路由存在于您的客户端 React 应用程序中,但不存在于您的服务器上,则重新加载和链接(任何直接命中服务器的内容)将返回 404 未找到错误。

这个问题的解决方案可以在这篇广泛的帖子中看到:https://stackoverflow.com/a/36623117/2249933 https://stackoverflow.com/a/36623117/2249933

主要原则是,将客户端路由与服务器上的路由相匹配,这样就允许干净的 url,但不受浏览器路由器本身的限制。

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

从 HashRouter 中删除 # 的相关文章

随机推荐

  • Mac 上 Docker 内的 Xdebug 无法工作

    我将本地开发设置从 Linux 移植到新的 Mac 机器 但在让 Xdebug 在 Mac M1 Pro 机器中与 PhpStorm 配合使用时遇到问题 我有一个包含 PHP 的容器 其中 Xdebug 安装并配置如下 zend exten
  • 安装APK时缺少lib文件夹

    我想知道如何构建我的 APK 以便我的库安装 复制到 data data
  • Rails 开发服务器、PDFKit 和多线程

    我有一个 Rails 应用程序 它使用 PDFKit 来呈现网页的 pdf 版本 我使用 Thin 作为开发服务器 问题是当我处于开发模式时 当我使用 bundle execrails s 启动服务器并尝试渲染任何 PDF 时 整个过程陷入
  • “实例显示状态”无法编译

    这是我试图弄清楚的 State Monad 代码 data State a State Int gt a Int instance Monad State where return x State c gt x c State m gt g
  • 如何忽略 Eclipse 中特定类型的未捕获异常?

    我在我的 Java 应用程序中使用第三方库 这个第三方库在每次应用程序启动时都会引发自定义的未捕获异常 该异常是无害的 仅用于第三方库内部记录的目的 由于未捕获此异常 它会导致我的 Eclipse IDE 切换到调试视角 并在每次启动应用程
  • D3:打字机风格的文本过渡

    In this jsfiddle http jsfiddle net VividD QbysN 标签通过减小旧文本的字体 然后增加新文本的字体 从一个文本过渡到另一个文本 但是 我希望新文本以 打字机 方式出现 就像这样jsfiddle h
  • Angular 应用程序仅在 IE11 上抛出语法错误

    我有 Angular 应用程序 该应用程序仅适用于 IE11 我已经设置了polyfills import core js es6 symbol import core js es6 object import core js es6 fu
  • 复制构造函数创建依赖副本

    我按照描述实现了复制构造函数here https stackoverflow com questions 15020850 copy constructors and defensive copying 但问题仍然是当我更新时route c
  • 带图像背景的 Outlook 2013 HTML 签名

    我找到了另一个线程 Outlook 2013 背景图像损坏 https stackoverflow com questions 22613230 outlook 2013 background image broken 但是我无法发表评论
  • Pod 清单写入 Deployment Manifest

    在 Kubernetes 中 将正在运行的 pod 清单转换为具有 x 个副本的部署的简单方法是什么 我尝试获取清单 k get po xyz o yaml gt po1 yaml 然后编辑 yaml 并与部署清单匹配 但这似乎并不容易 我
  • 如何替换 randomForest r 包中的引导步骤

    首先是一些背景信息 这在 stats stackexchange 上可能更有趣 在我的数据分析中 我尝试比较不同机器学习方法在时间序列数据上的性能 回归 而不是分类 例如 我训练了一个 Boosting 训练模型 并将其与随机森林训练模型
  • MVC3 将多个字段验证为单个属性

    我正在尝试验证包含两个字段的电话号码 第一个字段显示区号 另一个字段显示剩余的电话号码数字 要求是 它们都是必需的 它们必须是数字 区号字段最多为 6 位数字 电话号码字段最多为 10 位数字 两个字段都需要显示一条消息 例如 如果缺少区号
  • PHP PDO 按列名对查询结果进行分组

    以下 PDO 查询返回以下结果 db new PDO sth db gt prepare SELECT 结果如下 name curso ABC stack CDE stack FGH stack IJK stack LMN overflow
  • C# 中的 String 和 string 有什么区别?

    这两者之间有什么区别 我应该使用哪一个 string s Hello world String s Hello world string https learn microsoft com en us dotnet csharp langu
  • Java boolean[] 到 byte[] 以及返回

    我正在发送byte Java 中通过套接字连接的数组 我有一个相当长的boolean 数组 其中array length 8 0 我想转换这个boolean 数组变成byte 数组的元素数量是原来的 8 倍 这样我就可以发送byte 通过套
  • 类型特征与静态成员相比的优点?

    我有一堂课 Voxel 其子类可能具有也可能不具有许多不同的属性 材料 密度等 以及 get 和 set 方法 现在 我想编写一些代码 如下所示 template
  • 如何在全日历中显示事件的描述

    如何在全日历中显示事件的描述 我的活动有标题和说明 那么如何显示描述呢 当您添加标题和描述时 它将连接起来 使用下面的代码 您可以连接标题 eventRender function event element view element fi
  • 在 recyclerview 中附加 onClickListener 的最佳位置

    当我查看一些有关回收器视图的教程时 其中一些使用 viewHolder 构造函数来附加 onClick 侦听器 而其中一些使用 onBindViewHolder 方法 哪种方法是附加 onclicklistener 的最佳位置 我真的很困惑
  • php 访问 json 中的属性

    我已将以下已解码的 json 存储在 response result gt response object stdClass 6 5 EmailAddress gt string 18 email protected cdn cgi l e
  • 从 HashRouter 中删除 #

    我在用着react router dom对于我的路由 由于我也在使用 GitHub Pages 所以我需要使用HashRouter in my Router jsx like so import React from react impor