在react-router :id中使用百分号(%)

2023-12-29

我正在尝试在react-router id 中使用百分号。当使用%在 URI 中被禁止,我必须手动编码我的 URI 才能使用这个百分号。因此,使用 Link 时,我使用encodeURI 函数对 URI 进行编码:

<Link to={`/r/${encodeURI(my_str_with_unencoded_percent_sign)}`} >

在我的页面的源代码中,我可以看到该链接使用%25并不是%.

尽管如此,当单击链接时,我收到错误“URIError:格式错误的 URI 序列”(在我的代码的另一部分中,我有一个<Match pattern="/r/:id" …).

我做错了什么?看来 url 已解码before被传递给react-router的parseParams函数,该函数尝试第二次解码它,这导致了这个错误。

我发现了诸如以下的问题https://github.com/ReactTraining/history/issues/461 https://github.com/ReactTraining/history/issues/461 or https://github.com/ReactTraining/history/issues/461 https://github.com/ReactTraining/history/issues/461,但我没有找到解决这个问题的方法:如何在react-router :id中使用百分号?


这是一个工作修改版本网址参数 https://reacttraining.com/react-router/web/example/url-paramsRecat-Training 提供的示例。

将以下内容复制粘贴到您的 index.js 中并测试它以查看其工作原理。我本来打算为你提供一个 codeandbox,但是他们的内部路由存在问题,即使使用 uri 编码的 % 符号也会导致屏幕变黑...我确实在本地测试了这个,并且效果很好。

import React from "react";
import { render } from "react-dom";
import { BrowserRouter as Router, Route, Link } from "react-router-dom";

const ParamsExample = () => (
  <Router>
    <div>
      <h2>Accounts</h2>
      <ul>
        <li><Link to={`/${encodeURI("%netflix")}`}>Netflix</Link></li>
        <li><Link to="/zillow-group">Zillow Group</Link></li>
        <li><Link to="/yahoo">Yahoo</Link></li>
        <li><Link to="/modus-create">Modus Create</Link></li>
      </ul>

      <Route path="/:id" component={Child} />
    </div>
  </Router>
)

const Child = ({ match }) => (
  <div>
    <h3>ID: {match.params.id}</h3>
  </div>
)

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

在react-router :id中使用百分号(%) 的相关文章

随机推荐

  • jQuery:复选框不会失去焦点(模糊)[IE]

    我有一个脚本 可以让表格行在单击复选框后移动到顶部 在这里查看我的问题 jQuery 将表格行移动到第一个位置然后返回 https stackoverflow com questions 9699081 jquery move table
  • 高效实现一系列矩阵向量乘积/特定“张量”矩阵乘积

    我有一个特殊的算法 作为最后的步骤之一 我需要执行 3 D 数组与 2 D 数组的乘法 以便 3 D 数组的每个矩阵切片与 3 D 数组的每一列相乘 二维数组 换句话说 如果说A is an N x N x N矩阵和B is an N x
  • 解析这种json字符串化字符串 "{\"value\":[\"18\"]}"

    我就是想不通这个问题 已经尝试使用 JsonConvert SerializeObject item 我也得到了一个奇怪的字符串 如何从这个字符串化字符串中取出价值 value 18 Edit 这是我将其字符串化的地方 var data n
  • 在 eclipse 中更新我的 gradle 依赖项

    我的 eclipse 中有一个简单的 gradle 项目 我更新了 build gradle 以包含一些 apache http jar dependencies compile group commons collections name
  • 对不同类别运行多个卡方检验

    我有二进制数据 具体取决于个人是否通过 未通过测试 以及 df data 中的特征信息 例如性别 以及他们属于哪个部门 例如 x y z head data 9 department gender pass x Male 1 y Femal
  • Eclipse 增量生成器插件不起作用

    我最近开始在 Eclipse RCP 4 2 1 Juno 上使用 Eclipse 的插件开发环境 我使用增量构建器模板创建了一个项目 我的目标是在 Java 构建结束后对用户代码执行构建过程 问题是 我不知道如何使用生成器 我尝试将项目导
  • 提取 MS 访问表并将其放入 python 中的数据框中

    我尝试了许多不同的方法来从 Access 中提取数据并将其放入一个整洁的数据框架中 现在我的代码看起来像这样 from pandas import DataFrame import numpy as np import pyodbc fro
  • Unity 中的 NuGet 包

    我想在 Unity 中使用一些 NuGet 包 我根据这篇文章实现了Unity找到下载的DLL https www what c ould possible go wrong com unity and nuget https www wh
  • 仅从类层次结构中检索超类

    我有一个场景如下 Entity Table name ANIMAL Inheritance strategy InheritanceType JOINED public class Animal implements Serializabl
  • 有没有办法用一种类型声明多个函数参数?

    我对编程很陌生 无法真正理解为什么我不能只声明参数 类型与我处理普通变量的方式相同 并且必须一次又一次地声明类型 我的意思是 为什么我必须 Func int a int b float c 代替 Func int a b float c 当
  • 如何将 Syntastic 设置为 python3 检查器而不是 python2

    在 MacVim 中 我将以下代码保存为 test py print Hello world python2 这对于 python3 来说显然是错误的 但是 我运行 w 保存文件后 没有错误消息 以下是 vimrc 的一部分 都是关于 Sy
  • 如何在 Xamarin.android 中更改输入光标颜色

    在我的应用程序中需要更改 xamarin android 条目默认颜色 在我的应用程序中 背景图像是黑色 xamarin android 中条目的默认颜色也是相同的颜色 因此需要设置不同的颜色 请就此提出任何想法 我正在尝试以下代码 但没有
  • 在 Azure 自动化 Runbook 中执行时 Set-AzureRmContext 错误

    Update 似乎其他人也遇到了同样的问题reported https feedback azure com forums 246290 automation suggestions 16304161 add azurermaccount
  • 如何将 .sql 文件加载到 Scala?

    我有一个很长的 SQL 查询存储在 data sql 文件中 我想在我的 Scala 代码中执行这个文件 对于 sqlQuery 字符串 我使用 Spark sql sqlQuery 来执行 sql 但是对于 sql 文件 我应该如何执行它
  • 如何制作倒置的边框半径(反应本机)?

    我怎样才能在react native中做出这样的形状 在CSS中 解决方案之一是使用 webkit mask image 但我不知道如何在react native中做到这一点 倒边界半径 https i stack imgur com Yj
  • Realm Cocoa:通过 PK 查找多个对象

    潜伏已久 第一次提问 我在一个项目中使用 Realm Cocoa 来自 Realm io 并且正在努力通过 PK 执行搜索 假设我有一个名为RLMFoo它有一个主键称为bar 我还有一个 PK 列表 假设存储在一个数组中 NSArray p
  • 面试题:在php中,是123==0123吗?

    我已经回答了 这是假的 然后他问为什么 我无法回答 有人能回答吗 我很有兴趣学习它 这段代码 var dump 123 var dump 0123 会给你 int 123 int 83 这是因为0123是八进制表示法 因为0在开始时 whi
  • Erlang 和 JavaScript MD5 摘要匹配

    在这里测试 MD5 的 Javascript 实现 http www webtoolkit info javascript md5 htmlhttp www webtoolkit info javascript md5 html http
  • 分布式深度优先搜索

    我尝试在 C 中实现深度优先搜索 但我不太确定如何以分布式计算方式执行此操作 如果你们能帮我解决这个问题 我将非常感激 你可以在下面找到我的 DFS 代码 public class DFS static List
  • 在react-router :id中使用百分号(%)

    我正在尝试在react router id 中使用百分号 当使用 在 URI 中被禁止 我必须手动编码我的 URI 才能使用这个百分号 因此 使用 Link 时 我使用encodeURI 函数对 URI 进行编码 在我的页面的源代码中 我可