Reactjs React routes参数自动解码字符串
Hi路由器参数是否自动解码字符串 例如,我有这条路线Reactjs React routes参数自动解码字符串,reactjs,react-router,Reactjs,React Router,Hi路由器参数是否自动解码字符串 例如,我有这条路线 <Route path="/callback/:url"/> 当我用C5jb20%3D 当I console.log()显示参数时,它将打印C5jb20= 这是预期的行为吗?我是否可以更改此行为,以便仍然获得编码字符串 谢谢 C5jb20%3D是一个URL编码字符串,它是对URL中的特殊字符进行编码的一种方法。例如,如果您有一个URL参数,如?redirect=/some/path,服务器可能会将正向斜杠解释为路由路径,并将
<Route path="/callback/:url"/>
当我用C5jb20%3D
当I console.log()显示参数时,它将打印C5jb20=
这是预期的行为吗?我是否可以更改此行为,以便仍然获得编码字符串
谢谢
C5jb20%3D
是一个URL编码字符串,它是对URL中的特殊字符进行编码的一种方法。例如,如果您有一个URL参数,如?redirect=/some/path
,服务器可能会将正向斜杠解释为路由路径,并将预期的路由弄乱。这就是为什么您会在URL中看到类似于?重定向=%2Fsome%2Fpath
,以及您的示例的原因
window.location.path
将具有原始的未编码URL
您还可以通过以下方式取回:
不过,根据您的用例,您可能不想这样做。您好,谢谢您的回答!那么,这是react路由器的预期行为吗?因为如果是,那么在我从params中提取参数后,我将不会对其进行解码。。我只是不想再次出现与此编码字符串相关的意外错误:)谢谢!是的,这是预期和期望的行为。问题是,在URL中用字符(+或-)替换空格是很常见的,如果文本中存在这种情况,就无法区分它们。例如,
iphone7%2B+卖家
将在routeParams中自动转换为iphone7++卖家
。如果可以禁用自动解码,则可以解决此问题。
encodeURIComponent('C5jb20=') // "C5jb20%3D"