html - Next.js导出静态html后,如何判断是通过Link跳转还是原生a标签跳转?
问题描述
条件:导出静态html
如何识别是跳转next/link
还是被跳转direct access
(即一个标签访问)?
我尝试使用pageProps
with useRouter
and _app.tsx
,但都失败了。
帮我!
由谷歌翻译
解决方案
由于Next/App
不会为客户端转换卸载组件,因此您asPath
可以useRouter
跟踪App
从_app.tsx
. 如果没有 previous asPath
,那么它不是客户端转换。
asPath
:String
- 浏览器中显示的实际路径(包括查询)
可能的实现:
function usePrevious(value) {
const ref = useRef();
useEffect(() => {
ref.current = value;
}, [value]);
return ref.current;
}
function MyApp({ Component, pageProps }) {
const { asPath } = useRouter();
const previousAsPath = usePrevious(asPath);
useEffect(() => {
if (!previousAsPath) {
console.log('Direct access');
} else {
console.log(`Come from ${previousAsPath}`);
}
}, [previousAsPath]);
return <Component {...pageProps} />
}
export default MyApp;
推荐阅读
- vba - VBA 字典运行时错误 1004
- javascript - 选择字符串并忽略空格
- java - Java套接字-如何将消息从客户端c1发送到服务器s,然后从s发送到客户端c2
- automation - 使用 Uipath 自动访问表单
- c# - C# Mvc Api Xml 无法在 Powershell 中将字符串转换为 XML
- django - 从 Stripe 页面重定向回来后,获取 Django 错误“AnonymousUser”对象不可迭代
- javascript - 在 onclick 函数中发送数组
- javascript - 使用javascript滚动窗口后如何修复顶部的按钮?
- android - 使用 rxjava 定时器和改造
- python-2.7 - 提取检测到的类名——tensorflow对象检测API