嗨,react router params 会自动解码字符串吗?
例如我有这条路线
<Route path="/callback/:url"/>
当我用 C5jb20%3D
C5jb20=
当我 console.log() 该参数时它会打印
这是预期的行为吗?我可以改变这种行为,以便我仍然得到编码的字符串吗?
谢谢!
嗨,react router params 会自动解码字符串吗?
例如我有这条路线
<Route path="/callback/:url"/>
当我用 C5jb20%3D
C5jb20=
当我 console.log() 该参数时它会打印
这是预期的行为吗?我可以改变这种行为,以便我仍然得到编码的字符串吗?
谢谢!
C5jb20%3D
是一个 URL 编码字符串,它是一种对 URL 中的特殊字符进行编码的方法。例如,如果您有一个 URL 参数,例如?redirect=/some/path
,服务器可能会将正斜杠解释为路由路径,并弄乱预期的路由。这就是为什么您会?redirect=%2Fsome%2Fpath
在 URL 中看到诸如和您的示例之类的内容。
window.location.path
将具有原始的、未编码的 URL。
您也可以通过以下方式取回encodeURIComponent
:
encodeURIComponent('C5jb20=') // "C5jb20%3D"
不过,您可能不想这样做,具体取决于您的用例。