React 路由参数自动解码字符串

kke*_*ley 6 reactjs react-router

您好,反应路由器参数会自动解码字符串吗?

例如我有这条路线

<Route path="/callback/:url"/>
Run Code Online (Sandbox Code Playgroud)

当我用它来称呼它时C5jb20%3D

C5jb20=当我 console.log() 时它会打印该参数

这是预期的行为吗?我可以更改此行为以便仍然获得编码的字符串吗?

谢谢!

And*_*Ray 4

C5jb20%3D是 URL 编码字符串,这是对 URL 中的特殊字符进行编码的一种方法。例如,如果您有一个类似 的 URL 参数?redirect=/some/path,服务器可能会将正斜杠解释为路由路径,并扰乱预期的路由。这就是为什么您会在 URL 中看到诸如?redirect=%2Fsome%2Fpath和您的示例之类的内容。

window.location.path将具有原始的、未编码的 URL。

您还可以通过以下方式取回encodeURIComponent

encodeURIComponent('C5jb20=') // "C5jb20%3D"
Run Code Online (Sandbox Code Playgroud)

不过,您可能不想这样做,具体取决于您的用例。