next.js - Nextjs 获取元标记的 url
问题描述
我不是对元标签的疯狂体验,但据我所知,元标签喜欢og:url
或twitter:url
帮助平台如 twitter 或 facebook 来缓存结果,而不必在每次使用时再次查询页面。
因此,我试图获取每个页面的 url,包括动态页面,如下所示:
<meta property="og:url" content={router.asPath} />
这显然会导致/contact
或/news/1
- 我认为这是一个问题(是吗?),那么我如何包含整个 url?像window.location.href
服务器端的东西?
解决方案
由于没有window
对象服务器端,您必须检查它并在客户端进行。
选项1
检查window
:
<meta property="og:url" content={window ? window.location.href : "https://somehardcoded.url"} />
选项 2
使用useEffect
钩子,因为它只在客户端运行:
const [url, setUrl] = useState("https://somehardcoded.url")
useEffect(() => {
setUrl(window.location.href);
});
<meta property="og:url" content={url} />
推荐阅读
- javascript - Document.querySelector 返回 NULL 值 - 脚本位于页面底部
- swift - MapBox 注释标题在 Swift 中居中
- notepad++ - 制作大括号时如何使notepad ++转到下一行
- dpdk - 如何安装 DPDK 内核模块?
- sql-server - 仅当字段在更新之前为 false 时 SQL Server 才会触发
- java - 使用 Lombok 将 JSON 数组映射到 POJO
- javascript - 尝试使用下拉列表文本更改时,更改文本区域中的文本后没有更改?
- android - 显示键盘时的 BottomSheetDialogFragment 行为
- javascript - 我可以在我的类构造函数中调用一个与构造函数具有相同参数的函数吗?
- python - Pyinstaller 不在 Dist 文件夹中创建文件