更新时间:2023-02-26 15:11:02
您可以使用 router.events
.
You can listen to hash changes using hashChangeStart
event from router.events
.
const Test = () => {
const router = useRouter();
useEffect(() => {
const onHashChangeStart = (url) => {
console.log(`Path changing to ${url}`);
};
router.events.on("hashChangeStart", onHashChangeStart);
return () => {
router.events.off("hashChangeStart", onHashChangeStart);
};
}, [router.events]);
return (
<>
<Link href="/#some-hash">
<a>Link to #some-hash</a>
</Link>
<Link href="/#some-other-hash">
<a>Link to #some-other-hash</a>
</Link>
</>
);
};
如果您不使用 next/link
或 next/router
进行客户端导航(不推荐在 Next.js 应用中使用),那么您需要收听 window
的 hashchange
事件.
If you're not using next/link
or next/router
for client-side navigation (not recommended in Next.js apps), then you'll need to listen to the window
's hashchange
event.
您的 useEffect
如下所示.
useEffect(() => {
const onHashChanged = () => {
console.log('Hash changed');
};
window.addEventListener("hashchange", onHashChanged);
return () => {
window.removeEventListener("hashchange", onHashChanged);
};
}, []);