如何使用 React Router 6 在 React 组件之外导航

2024-05-05

现在我有一个历史记录模块,它让我甚至可以在反应组件之外使用历史记录:

import { createBrowserHistory } from 'history';

export default createBrowserHistory();

然后我直接在App.jsx中使用这个历史记录

import { Router } from 'react-router-dom';
...
<Router history={history}>...</Router>

我可以在任何地方导入和使用相同的历史对象。即使在任何反应组件之外的自定义助手中也是如此。

这怎么可能在反应路由器6?

由于历史记录被导航取代,我在网上还没有看到任何解决方案。

我知道它仍处于测试阶段,但我想提前检查一下。

感谢您的任何想法!


我最终得到了以下解决方案:

首先,react-router-dom 6 有导航,没有历史记录。最好使用导航来通过路线进行导航:

我创建并修复了我的 History 对象,以便它可以继续使用“push”进行工作,并且我不需要进行大量的返工:

const History = {
  navigate: null,
  push: (page, ...rest) => History.navigate(page, ...rest),
};

export default History;

然后我制作了自己的组件来设置导航:

import { useNavigate } from 'react-router-dom';

const NavigateSetter = () => {
  History.navigate = useNavigate();

  return null;
};

然后,在定义默认路由器时,我将设置器作为子项放置:

import { BrowserRouter } from 'react-router-dom';

<BrowserRouter>
    <NavigateSetter />
    <App />
</BrowserRouter>

之后,您可以使用默认的react-router-dom导航API在任何地方使用History.push或History.navigate。

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

如何使用 React Router 6 在 React 组件之外导航 的相关文章

  • 在redux中间件中使用react-router进行重定向

    我创建了一个中间件来检查请求是否返回无效的访问响应 如果状态是 401 我想将用户重定向到登录页面 这是中间件代码 import React from react import push replace from react router
  • 反应路由器路径内的问号

    我正在尝试在 URL 中传递参数 但读取时遇到问题 我正在使用反应路由器 v4 URL http localhost 3000 reset token 123 http localhost 3000 reset token 123我试着这样
  • 如何在反应中单击按钮将一个组件移动到另一个组件?

    您能告诉我如何在反应中单击按钮时将一个组件移动到另一个组件吗 我得到了react router js来自 cdn 我不知道如何使用这个 js 我想展示second component on button click of第一个组件 这是我的
  • 将服务器端渲染添加到 create-react-app

    我正在研究 create react app 和 SSR 我在这个 repo 中添加了 redux 和 react router gt https github com sarovin StarteKit https github com
  • ReactJS 通过 API 调用保护路由

    我正在尝试保护 ReactJS 中的路由 在每个受保护的路由上 我想检查保存在 localStorage 中的用户是否良好 下面你可以看到我的路线文件 app js class App extends Component render re
  • 在 React 路由器重定向上运行 jquery 脚本

    我正在寻求移植我现有的网站 该网站使用主题来利用反应组件 该主题有很多使 UI 正确渲染的功能 包括几个动画 主题的js导入了很多其他的js库 这意味着我无法编写主题提供的任何 UI 元素的 React 版本 然而 实际上元素可以用作 哑组
  • 通过 React Router 传递函数

    我想通过 React Router 将函数传递给子组件 我尝试了以下方法 但似乎不起作用 class App extends Component constructor props super props render return div
  • 如何导航到新页面 React Router v4

    我正在构建一个加密货币市场应用程序来练习reactjs 当应用程序启动时 具有某些属性的货币列表将显示为列表 我需要导航到不同的页面 新页面 Currency组件 而不加载当前页面底部的组件 目前我能够将其呈现在页面底部 但这不是我需要的
  • 从 HashRouter 中删除 #

    我在用着react router dom对于我的路由 由于我也在使用 GitHub Pages 所以我需要使用HashRouter in my Router jsx like so import React from react impor
  • 在react-router-dom中隐藏某些页面的标题

    有没有办法可以仅隐藏 React Router 中某些路由的页面标题 我现在的问题是我的App组件呈现我的Main组件 其中包含我的BrowserRouter 和我的Header呈现在我的App组件 所以我无法根据路由路径渲染标题 这是一些
  • 如何链接到 MUI 迷你抽屉侧边栏中的另一个页面?

    我尝试用 封装我的 ListItem 组件 但它不起作用 我也尝试使用历史选项 但这让我感到困惑 我的代码和框 codesandbox io s funny einstein deuqhi file src App js 这是我的 side
  • React Router v5.1.2 公共和受保护的经过身份验证和基于角色的路由

    目标是将 login 作为唯一的公共路由 一旦登录 用户就拥有基于用户角色的路由 身份验证是使用 Keycloak 完成的 我从 keycloak idTokenParsed preferred username 获取用户 管理员 经理 工
  • 在 Apache 服务器上处理 React Router

    我在重定向 Apache 服务器上 React 生成的 URL 路径的 404 错误时遇到问题 设想 假设我有一些由 React Router 生成的 URL www somewebsite com apps Problem 如果最终用户单
  • 如何使用 React Router 6 在 React 组件之外导航

    现在我有一个历史记录模块 它让我甚至可以在反应组件之外使用历史记录 import createBrowserHistory from history export default createBrowserHistory 然后我直接在App
  • React Router V5 在路由中使用上下文变量的最佳方式

    在我的应用程序中 我定义了路线 如下所示
  • React router v4 嵌套路由相对路径

    我有一个带有 React Router v4 的组件到另一个组件 我想在第二个组件中添加另一个路由 这是主要路线 const Dashboard gt return div div
  • ReactJs - 是否可以根据组件树的状态设置 url 或查询字符串

    我有一个组件 其中有多个嵌套组件 特别是选项卡 药丸等 任何时候都无法看到所有组件 我希望能够根据 URL 参数 或 URL 设置它们的默认状态 属性 但我不清楚如何在 React 中实现这一点 例如 我有一个带有两个选项卡的组件 引导程序
  • React + 路由器 + Google 标签管理器

    我花了一些时间在 Quickcypher com 上开发 MVP 我想开始进行一些分析 它对于跟踪总访问量非常有用 但是当我尝试跟踪使用 React Router 的网站上的不同 URL 时 情况却出问题了 我的方法是这样的 设置一个在某些
  • React:URL 配置文件 ID 不匹配 (match.params.id)

    所以每当我点击 查看个人资料 链接时 View Profile 它在 URL 中显示了良好配置文件的用户 ID 但每当我单击它以将其与此按钮匹配时 我都会收到错误 const Profile getProfileById match gt
  • 为什么我的反应路由器链接将我带到页面中间?

    我的网站上有很多链接 但只有一个可以执行此操作 它没有将我带到导航栏的顶部 而是转到内容的中间 知道为什么会这样吗 这是一个页面 其中有一个 map经历一些JSON 这是渲染div页面下方的文本元素 如果重要的话 这是一些可能相关的代码 路

随机推荐

  • 了解 Mac 上的 Oracle Java

    我在 OS X 上使用 Java 很多很多年了 最近当 Apple 停止默认包含 Java 时 我放弃了操作系统并为我安装了它 当然是 Apple 的版本 现在我使用的是 OS X 10 8 并且需要安装 Java 7 因此我刚刚获得了 D
  • 如何在 Express 4.0 中发送 Flash 消息?

    因此 我的 Web 应用程序需要身份验证 并且我有一个注册页面 如果用户尝试使用数据库中已有的电子邮件进行注册 我想向他们显示一条错误消息 我正在尝试在 html 端使用此代码来执行此操作 div class alert alert dan
  • 如何将 BufferedImage 转换/转换为图像?

    我想转换一个BufferedImage to an java awt Image 我的源图像是 tif 所以我使用 JAI 将其读取为PlanarImage PlanarImage 源 JAI create 文件加载 IMG DIR tag
  • 单选按钮列表 OnSelectedIndexChanged

    我正在寻找处理 ASP net RadioButtonList 后面的 C 代码 上选择的索引更改的最佳方法 我有 3 个列表项 对于第一个 我希望它在页面上显示隐藏的 asp textbox 而其他 2 个将隐藏文本框 asp net s
  • 开发类似 python 的小型语言时的缩进控制

    我正在使用 flex byacc 用于词法和解析 和 C 开发一种类似 python 的小型语言 但我有一些关于范围控制的问题 就像 python 一样 它使用空格 或制表符 进行缩进 不仅如此 我还想实现索引中断 例如 如果您在另一个 w
  • C#中使用私有变量有什么好处

    示例代码 替代代码如下 person cs using System class Person private string myName N A Declare a Name property of type string public
  • 是否可以使用 S3 进行 Flash 伪流?

    我一直在使用 S3 来存储和提供 FLV 和 MP4 视频 它效果很好 但内容是渐进下载的 我想知道是否有可能让所谓的 伪流 与 S3 一起使用 伪流允许观看者在下载完整视频之前在视频中向前搜索 并仅将必要的位发送到 Flash 播放器 我
  • Excel 中的样条插值

    我会让这个问题变得简单明了 因为我的截止日期已经到了 在为我的部分做一些报告时 我到达了可以真正在 Excel 中使用插值的部分 现在 我从未对其函数或一般的 VBA 进行过任何练习 那么 有没有一个地方我可以 或者你们中的任何人都知道一些
  • 从另一列计算出的列?

    给出下表 id value 1 6 2 70 有没有办法添加根据同一个表中的另一列自动计算的列 与 VIEW 类似 但属于同一个表的一部分 举个例子 calculated将是一半value Calculated应该会自动更新value变化
  • ASP.NET Web 服务中的 XML 文档中存在非法字符

    我要问并回答我自己的问题 我希望没人介意 但我认为这可能对其他人有用 如果您设置的 ASP NET Web 服务返回的对象包含对 XML 无效的字符 则在将对象序列化为 SOAP xml 并且客户端尝试反序列化该 xml 后 将会引发异常
  • 如何将图像存储在网站根目录之外

    我希望用户上传的所有图像都保存在我的网站目录之外 让我为大家解释一下 假设我有一个网站部署在服务器中 目录路径是 e g D TestWeb 目前我添加了一些其他目录来存储图像 D TestWeb imgProfile D TestWeb
  • 32位机器如何计算双精度数

    如果我只有32位机器 CPU如何计算双精度数 这个数字是 64 位宽 FPU 如何处理它 更普遍的问题是 如何计算比我的 alu 更宽的东西 不过我完全理解整数方式 您可以简单地split https stackoverflow com q
  • LINQ Group By 投影成非匿名类型?

    我有以下 LINQ 示例 var colorDistribution from product in ctx Products group product by product Color into productColors select
  • 阻止 ItemsControls 共享过滤器

    我有两个 ItemsControl 一个是 ListView 另一个是我正在开发的自定义控件 我已将两个控件的 ItemsControl ItemsSource 属性设置为同一个 IEnumerable 对象 在本例中为 List 我将筛选
  • 使用 ImageProcessor 从 MemoryStream 保存/加载图像时出现一般 GDI+ 错误

    我在 imageFactory Load inStream 线上遇到通用 GDI 错误 我的项目是 ASP NET Core Razor Pages 我尝试将 inStream 克隆到新流 这在之前保存位图时对我有帮助 但没有成功 以前有人
  • 如何安装wkhtmltopdf?

    现在我正在使用rails 3 0 0 我正在使用Ubuntu 11 10 64位操作系统 我想安装wkhtmltopdf 请告诉我wkhtmltopdf的静态版本 安装中wkhtmltopdf 在 Ubuntu Linux 机器上 首先使用
  • GWT 和 Guava 的问题

    我很难让 GWT 与 Guava 一起工作 我添加了guava r09 gwt jar到我的类路径 并且
  • 迁移后删除轨道模型

    我觉得很奇怪 创建模型 运行迁移 销毁它 然后再次创建相同的模型会报告 SQL 异常 project master rails g model name name invoke active record create db migrate
  • 为 customere xml 按钮着色时遇到问题

    我在为自定义按钮着色时遇到问题 由于某种原因 似乎无论我想应用什么颜色更改 文本或背景 按钮都保持不变 我注意到button xml具有所需的颜色和正确的形状 尽管没有出现按钮background color活动的财产 活动中的按钮
  • 如何使用 React Router 6 在 React 组件之外导航

    现在我有一个历史记录模块 它让我甚至可以在反应组件之外使用历史记录 import createBrowserHistory from history export default createBrowserHistory 然后我直接在App