首页 > 解决方案 > 如何在 Gatsby 中刷新当前页面?

问题描述

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

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

但它不起作用。

标签: reactjsgatsbyreach-router

解决方案


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

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

您可以关注此 GitHub 线程以获取更多信息。正如您所看到的,它可以通过深入history.pushState研究和其他棘手的方式来实现,但它总是以令人头疼的方式结束,不建议这样做,因为它不是它的目的,@reach/router如果它茁壮成长将有多个警告。

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


推荐阅读