reactjs - 在 URL 中使用 % 进行反应解码会导致错误
问题描述
为了允许 URL 参数有百分号,我使用以下代码:
<Link to={"project/" + encodeURIComponent(projectName.replace("%", "%25"))}>{projectName}</Link>
上面的链接将我带到该projects
页面。这就是我在projects
页面上解码 projectName 参数的方式:
const projectName = decodeURIComponent(match.params.projectName);
此代码有效。但是,如果我刷新projects
页面或使用浏览器后退/前进按钮导航到projects
页面,解码时会出错。URIError: URI malformed
看起来 match.params.projectName 在使用前进/后退按钮刷新/导航后已经解码。这会导致错误发生。
解决方案
该问题是由 React Router 解码 URI 的方式引起的。特别是它处理 % 字符的方式。
我通过用一些随机文本替换URI 参数中的每个%来解决这个问题。永远不会出现在您的程序中的东西。即... 123PERCENTREPLACEMENT123。
它基本上是百分号的手动编码,我必须在另一端通过用 % 符号替换相同的唯一字符串来解码。
推荐阅读
- java - 在 Spring Boot Jpa 中找不到转换器
- php - 为连接到一个 Stripe 帐户的单独站点向客户收取单独的来源/卡费用
- bash - 目录作为命令行参数而不在linux中使用完整路径名
- reactjs - 在地图上反应原生位置搜索栏
- sql-server - Azure SQL 旧基数估计不像 SQL Server 2016 那样工作
- angular - 来自数组的打字稿枚举
- javascript - 在 snapshotChanges 中添加文档会添加 2 个文档
- apache-spark - Spark:错误应用程序已被杀死。原因:所有master都没有反应
- android - Monkeyrunner 问题
- python - 如何生成具有 V 个可能值的 N 个插槽的所有可能组合?