当再次转到当前活动路由时,如何强制reach路由器(在盖茨比)重新加载页面



我有一个类似于以下的情况:

<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本身的链接都不会有任何作用。网站没有更新,状态也没有改变,盖茨比或Reach似乎以某种方式阻止了这一点。

有没有任何方法可以绕过或禁用这种行为,并以某种方式迫使Gatsby重新加载/重新发布页面?

React在道具或状态发生变化时重新发送页面。

如果我在/products路线上,点击任何其他链接也会导致/products本身,什么都不会做

这意味着道具和状态都不会因为你在同一条路上而改变?!那你就不会得到复读了。如果我弄错了,请换个说法,更具体地回答你的问题。

一种可能的解决方案是:通过单击链接,您还可以触发一个更改状态的函数。这意味着,你将不得不远离简洁的<链接/>而是实现了大量的状态管理代码。但若你们通过改变状态来过滤,那个么就并没有办法了。

Use React钩子useState用于更改状态,useEffect用于应用状态更改。使用Reach Router的navigate触发状态更改。

相关内容

  • 没有找到相关文章

最新更新