React Router 不对&符号进行编码,而是对路径参数中的空格进行编码

React Router doesn't encode ampersands but encodes spaces in path params

我对 React 路由器编码空间有问题,但对 & 符号没有问题。所以 localhost:8080/you & me 被编码为 localhost:8080/you%20&%20me 而不是 localhost:8080/you%20%26%20me 并且我正在使用一个不稳定的 hack 来解码然后重新编码所有内容。我想知道是否有人可以推荐更好的解决方案。

不要在 URL 中使用 non-alphanumeric 个字符。 &/?= 等字符在 URL 中具有特殊含义。尽管在 url 中创建带有 & 的路由组件时 react-router 不会抛出错误,正如您所注意到的那样,您最终会遇到奇怪的行为。最好的做法是避免出现奇怪的边缘情况。您可以在 url here.

中阅读有关允许字符的更多信息

作为变通方法,您可以获得与 localhost:8080/you-and-me 几乎相同的 URL。这是一个没有空格和特殊字符的安全 url。它也是人类可读的,任何带有空格的东西都不容易阅读,因为它会被编码。