如何在下一个js中使用NextHead并设置打开图形标记。我正在从细节页面传递 prop ,但它没有出现在源代码中。
<NextHead>
<title>{title}</title>
<meta property="og:type" content="website"/>
<meta name="description" content={description}/>
<meta property="og:title" content={title}/>
<meta name="description" content={description}/>
<meta name="keywords" content={keyword}/>
<meta property="og:url" content={url}/>
<meta property="og:description" content={description}/>
<meta property="og:image" content={image}/>
</NextHead>
8条答案
按热度按时间e5nqia271#
在根文件夹的
config.js
文件中,导出要包含在 meta标签中的数据。例如在
components
文件夹中的Meta.js
文件中,您可以:在
pages/_app.js
中,添加添加到
import
语句中,只需添加<Meta />
组件即可。fae0ux8s2#
为什么需要为每个页面添加元数据标签?它应该设置在你的根页面。试试这个插件,https://github.com/garmeeh/next-seo
6tqwzwtp3#
使用
next/head
暴露的<Head>
组件。但也有一些陷阱。their documentation:
head的内容在卸载组件时被清除,因此确保每个页面都完整地定义了head中需要的内容,而不对其他页面添加的内容进行假设。
最难的,这将有你松散你的头发是这一个:
title
、meta
或任何其它元件(例如,script
)需要作为Head元素**的直接子元素包含,或者 Package 到最多一个级别的<React.Fragment>或数组中,否则在客户端导航中将无法正确拾取标签。创建一个包含有条件渲染的 meta标记的组件已经太多了,因为这使得Next的返回太深了。确保
meta
标记直接位于<Head>
之下,或者正如文档中所说, Package 到最多一个<React.Fragment>
或条件中,如我的代码片段所示。k0pti3hp4#
我写这篇文章作为大家的参考,如果你从
9.5.2
运行next.js
版本,只需添加以下<Head />
作为示例,在页面目录中创建一个文档,即_document.js
,它将覆盖next.js提供的默认文档,如下所示_document.js
zengzsys5#
只需要从属性更改为名称,它将工作。
yjghlzjz6#
这就是我的发现在新版本的Next.js(没有getInitialProps)中,每当我在页面或组件中创建 meta标记时,当我检查页面时,它会显示在头部,但当我打开“页面源代码”时,它不会显示在头部。在调试问题时,我尝试通过pageProps将我的动态 meta标记传递到_app. js中,并且成功了!我不知道为什么会这样,也不知道是否有更好的解决方案。但我是这么做的
下面是我的getServerSideProps对象的样子。它使用预取的事件数据来创建元标签,并在props中传递它:
thtygnil7#
你可以从这里的例子中看到,next/head被导入,并将特定的 meta标签添加到特定的页面。
如果这不起作用,请从您的开发控制台提供错误消息。应该有一些错误导致这种方法不起作用。
nxowjjhe8#
其中一个问题是Next.js Head组件要求所有 meta标签都有一个name属性。我在任何地方都没有看到这方面的记录,我相信这就是为什么,例如
没有在DOM中结束。我花了相当长的时间才理解这个问题,所以我希望这对某人有帮助。