react-router-domV6怎么获取返回页面时的来源路径?
react-router-dom V6路由信息中,有没有像vue-router那样的from和to信息?比如首页进入详情页,然后用户点击浏览器的返回按钮,从而返回到首页,那么我在首页有什么办法可以知道用户是从详情页返回来的呢?
回复
1个回答
test
2024-07-06
在 React Router v6 中,你用 useLocation 和 usePrevious 自定义 Hook 来获取返回页面时的来源路径。useLocation 是 React Router v6 提供的一个 Hook,可以用来获取当前页面的路由信息。usePrevious 是一个自定义的 Hook,可以用来存储上一个状态值。
首先你,创建一个 usePrevious 自定义 Hook:
import { useRef, useEffect } from 'react';
function usePrevious(value) {
const ref = useRef();
useEffect(() => {
ref.current = value;
}, [value]);
return ref.current;
}
然后,在您需要获取来源路径的组件中,使用 useLocation 和 usePrevious Hook:
import { useLocation } from 'react-router-dom';
import usePrevious from './usePrevious'; // 导入自定义的 usePrevious Hook
function YourComponent() {
const location = useLocation();
const prevLocation = usePrevious(location);
useEffect(() => {
if (prevLocation) {
console.log('From:', prevLocation.pathname);
console.log('To:', location.pathname);
}
}, [location, prevLocation]);
}
这样,每当路由发生变化时,useEffect 将会触发并输出来源路径(from)和目标路径(to)。当用户点击浏览器的返回按钮时,你就可以看到相应的来源路径。
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容