开发者问题收集

获取 React Router URL

2022-06-04
87

我正在尝试编写一个函数,将当前位置设置为刚刚单击的路线。但是,如您所见,它给出了我单击按钮时所在页面的网址,而不是按钮本身的路径页面。我应该用什么来代替 window.location.pathname

const setLocation = () => {
    console.log(window.location.pathname);
    setCurrentLocation(window.location.pathname);
  };

 <Link onClick={() => setLocation()} to="/today" className="btn btn-primary btn-sm">

    <Link onClick={() => setLocation()} to="/upcoming" className="btn btn-primary btn-sm">
2个回答

为什么要将其存储到状态中?

ReactRouter 有一个钩子 useLocation https://v5.reactrouter.com/web/api/Hooks/uselocation ,您可以在其中获取任何推送路径的 .pathname 到历史记录。

如果您确实想自己存储位置,请将 to 中的路由值作为 setLocation 函数中的参数传递,或者创建一个包装 Link 组件并存储位置的组件:)

即:

<Link onClick={() => setLocation("/upcoming")} to="/upcoming" className="btn btn-primary btn-sm">
D3Portillo
2022-06-04

代码如下 ===>

onClick={
(e)=>console.log(e.target.href)
setLocation(e.target.href)
}
const setLocation = (path) => {
    console.log(window.location.pathname);
    setCurrentLocation(window.location.pathname+path);
  };
Mrsh1213
2022-06-04