useLocation 中的重复路径名问题

Duplicate pathname issue in useLocation

我正在制作一个带有 React 和 React 路由器的网络。

问题是useLocation()中的pathname有上一页的记录和当前页的记录

例如,主屏幕上的'/'和另一个页面上的'/business'页面形成对比。

此外,如果您刷新 /business 页面并转到“/info”,“/business”和“/info”会一起出现。

如果你看我上面贴的图,每当发生滚动事件时,我都会尝试判断pathname(同样是url变量)变量是否为'/'并根据逻辑编写布尔值。

但是,有些情况下,在控制台中,语句中,旧路径名和当前路径名有两次执行。

如果只把url或者url带到控制台,显示的是当前结果值,但是如果在scroll事件中提示的话,上一页的历史记录其实也带过来了window.

有人知道解决这个问题的方法吗?

您可能需要 exact 关键字:

When true, the active class/style will only be applied if the location is matched exactly.

<Switch>
  <Route exact path="/"><Home/></Route>
  <Route exact path="/accounts/login"><Login/></Route>
  <Route exact path="/accounts/profile"><Profile/></Route>
</Switch>

可能是因为您定义了“/”路由,导致 React Router 无法准确解释 URL。

是的,将 prop 应用于每个 Route 可能有点矫枉过正,但它保证没有错误的余地。