首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强制reach-router (在Gatsby中)在再次转到当前活动的路由时重新加载页面?

如何强制reach-router (在Gatsby中)在再次转到当前活动的路由时重新加载页面?
EN

Stack Overflow用户
提问于 2020-11-14 18:14:15
回答 1查看 458关注 0票数 1

我的情况类似于以下情况:

代码语言:javascript
复制
<Link to="products" state={{ category: "all" }}>All Products</Link>
<Link to="products" state={{ category: "lawnmowers" }}>Lawnmowers</Link>
<Link to="products" state={{ category: "saddles" }}>Saddles</Link>

这个想法是,根据用户点击的链接,我会过滤掉产品,只显示该类别。我对这个解决方案的易用性相当满意,理想情况下我不想改变它。

当我在不同的路线上时,这很好用,例如,我在/about,点击割草机链接,我会得到一个满是割草机的页面。但是,如果我在/products路线上,单击任何其他也指向/products本身的链接根本不会做任何事情。网站不会刷新,状态不会改变,Gatsby或Reach似乎以某种方式阻止了这一点。

有没有办法绕过或禁用这种行为,并以某种方式强制Gatsby重新加载/重新呈现页面?

EN

回答 1

Stack Overflow用户

发布于 2020-11-15 10:24:06

当道具或状态改变时,React会重新渲染页面。

如果我在/products路线上,那么单击任何其他也指向/products本身的链接根本不会做任何事情

这意味着道具和状态都不会改变,因为你们在同一条路线上?!那么你就得不到重播者了。如果我弄错了,请重新措辞,并更具体地回答你的问题。

一种可能的解决方案是:通过单击链接,还可以触发一个更改状态的函数。这意味着,您将不得不远离简洁的,而是实现大量的状态管理代码。但是,如果您通过更改状态进行过滤,则是没有办法的。

使用React hooks useState更改状态,使用useEffect应用状态更改。使用到达路由器的navigate触发状态更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64832800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档