如何在 Gatsby 中刷新当前页面?

时间:2021-01-06 18:10:31

标签: reactjs gatsby reach-router

我有一个菜单,其中包含指向不同页面的链接,但是当我单击指向我已经打开的页面的链接时,实际上什么也没有发生。我希望页面重新呈现,就像用户从另一个页面点击一样。 我试过了

navigate('/temp')
navigate(link, { replace: true })

但它不起作用。

1 个答案:

答案 0 :(得分:1)

简短的回答是你不能使用 @reach/router 刷新同一个页面(来自 React,Gatsby 从它扩展)。这是因为位置相同,所以对于内部路由,没有任何变化,因此不会强制刷新。

实现它的最简单方法是使用老式的 window.location.reload()。这将刷新整个页面,强制再次渲染组件。

您可以关注this GitHub thread了解更多信息。如您所见,它可以通过潜入 history.pushState 和其他棘手的方式来实现,但它总是以令人头疼的方式结束,不推荐这样做,因为它不是 @reach/router 的目的,如果它蓬勃发展将是有多个警告。

对于页面之间的标准内部导航,请使用 <Link> 组件而不是 navigate