Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何刷新盖茨比中的当前页面?_Reactjs_Gatsby_Reach Router - Fatal编程技术网

Reactjs 如何刷新盖茨比中的当前页面?

Reactjs 如何刷新盖茨比中的当前页面?,reactjs,gatsby,reach-router,Reactjs,Gatsby,Reach Router,我有一个菜单,上面有指向不同页面的链接,但当我点击指向我已经打开的页面的链接时,实际上什么都没有发生。我希望该页面重新呈现,就像用户从另一个页面单击一样。 我试过了 navigate('/temp') navigate(link, { replace: true }) 但是它不工作。简单的回答是,你不能使用@reach/router刷新同一个页面(从React开始,盖茨比从它开始扩展)。这是因为位置相同,所以对于内部路由,没有任何更改,因此不会强制刷新 最简单的方法是使用老式的window.l

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

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

但是它不工作。

简单的回答是,你不能使用
@reach/router
刷新同一个页面(从React开始,盖茨比从它开始扩展)。这是因为位置相同,所以对于内部路由,没有任何更改,因此不会强制刷新

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

您可以跟随了解更多信息。正如您所见,它可以通过潜入
历史.pushState
和其他棘手的方式来实现,但它总是以令人头痛的方式结束,不建议这样做,因为它不是
@reach/router
的目的,如果它蓬勃发展,将有多个警告


对于页面之间的标准内部导航,是否使用组件而不是
导航

,而不刷新页面?您尝试在什么级别(例如组件深度)执行此操作?如果没有状态或属性更改,则没有明确的理由重新渲染,除非您强制它重新渲染。这是有效的替代方案吗?{从'@reach/router'const Layout=()=>{const forceReload=history.location.state.sameLink导入{globalHistory as history}?{key:new Date()}:{}返回}可能是这样,如果没有沙盒,就不可能知道它在所有浏览器或不同的用例中的行为。对于格式设置,我很抱歉:/不用担心:)。在沙盒中尝试一下,我们将尝试进行更多的调试。但正如我所说,很难知道它是否在不同的用例或场景中工作。