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

Reactjs 当再次转到当前活动路由时,如何强制到达路由器(在盖茨比中)重新加载页面?,reactjs,gatsby,reach-router,Reactjs,Gatsby,Reach Router,我的情况与以下类似: <Link to="products" state={{ category: "all" }}>All Products</Link> <Link to="products" state={{ category: "lawnmowers" }}>Lawnmowers</Link> <Link to="products" s

我的情况与以下类似:

<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
本身的链接都不会起任何作用。网站没有刷新,状态没有改变,盖茨比或瑞奇似乎在某种程度上阻止了这一点


有没有办法绕过或禁用此行为,并以某种方式迫使盖茨比重新加载/重新加载页面?

当道具或状态更改时,React会重新加载页面

如果我在/products路线上,单击任何其他也指向/products本身的链接都不会起任何作用

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

一个可能的解决方案是:通过单击链接,还可以触发一个改变状态的函数。这意味着,您将不得不从简明代码转移到大量的状态管理代码。但如果你通过改变状态来过滤,就没有办法了


使用useState更改状态,使用useEffect应用状态更改。使用Reach路由器触发状态更改。

当道具或状态更改时,React会重新启动页面

如果我在/products路线上,单击任何其他也指向/products本身的链接都不会起任何作用

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

一个可能的解决方案是:通过单击链接,还可以触发一个改变状态的函数。这意味着,您将不得不从简明代码转移到大量的状态管理代码。但如果你通过改变状态来过滤,就没有办法了


使用useState更改状态,使用useEffect应用状态更改。使用Reach路由器触发状态更改。

为什么要重新加载页面?这对用户来说有点糟糕。相反,可能会以不同的方式设置指向当前页面的链接的样式,以便用户知道发生了什么,而不单击它们?为什么要重新加载页面?这对用户来说有点糟糕。也许可以改变当前页面链接的样式,让用户知道发生了什么,而不点击它们?