reactjs - 如何在 Gatsby 中刷新当前页面?
问题描述
我有一个包含指向不同页面的链接的菜单,但是当我单击指向我已经打开的页面的链接时,实际上什么也没有发生。我希望页面重新呈现,就好像用户从另一个页面点击一样。我试过了
navigate('/temp')
navigate(link, { replace: true })
但它不起作用。
解决方案
简短的回答是您不能使用@reach/router
(来自 React,Gatsby 扩展自它)刷新同一页面。这是因为位置相同,因此对于内部路由,没有任何变化,因此不会强制刷新。
实现它的最简单方法是使用老式的window.location.reload()
. 这将刷新整个页面,强制再次渲染组件。
您可以关注此 GitHub 线程以获取更多信息。正如您所看到的,它可以通过深入history.pushState
研究和其他棘手的方式来实现,但它总是以令人头疼的方式结束,不建议这样做,因为它不是它的目的,@reach/router
如果它茁壮成长将有多个警告。
对于页面之间的标准内部导航,请使用<Link>
component 而不是navigate
.
推荐阅读
- c++ - c++ 在另一个源文件中的一个源文件中使用向量定义
- android - 在我的应用程序中将“屏幕缩放”设置更改为“大”完全弄乱了几个屏幕(尤其是片段布局)
- sql - 自动增量选择 SQLite
- angular - AngularTS,订阅测试
- android - 使用 Parcelable 衡量性能
- flask - 使用 flask_uploads 上传图像时,图像未验证
- redhat-brms - 我可以将 Red Hat Developer Studio 与 Red Hat Decision Manager 连接起来吗?
- javascript - 如何在 VueJS SFC 中使用 JavaScript 访问样式定义?
- python - 如何在 Anaconda/Conda 中安装 django cms?
- sql - 联系人数据库设计