我正在在React中的一个完整站点上工作。我正在使用<HashRouter>
渲染我的应用。在整个网站中,您会看到一个使用<Link>
S将您带到不同页面的导航菜单。
我网站中的一个页面之一是商店,其URL为 /Shop
。
当您在商店中单击产品时,它使用<Link>
将产品名称附加到当前URL -/Shop/Product
的末尾 - 并呈现相应的信息。
如果您正在查看产品,并且尝试导航到另一个页面,即使使用replace={true}
,它也只能替换最后一个条目。因此,如果我目前在/Shop/Product
,并且尝试导航到/Contact
,则URL会更改为/Shop/Contact
。
我是否误解了replace
应该如何工作?还是我在做事不正确?任何帮助都将不胜感激。
如果您使用类似的东西:
<Link to="Contact" />
它只会更改URL的最后一部分,因为它是相对路径,因此,如果您在/Shop/Something
上,它将更改为/Shop/Contact
您可能想使用绝对路径:
<Link to="/Contact" />
-
替换vs推路是另一回事。如果您认为自己的路线历史是一个数组:
[
'/Shop/Item',
'/Shop/Item2'
]
push
将附加到列表,replace
将替换最后一个索引