如果您需要使用 head 访问组件状态,您应该迁移到使用 useHead。
如果您需要使用 Options API,当您使用 defineNuxtComponent 时,有一个 head() 方法可以使用。
bridge.metaimport { defineNuxtConfig } from '@nuxt/bridge'
export default defineNuxtConfig({
bridge: {
meta: true,
nitro: false, // If migration to Nitro is complete, set to true
},
})
在您的 nuxt.config 中,将 head 重命名为 app.head。(请注意,对象不再有用于去重重复的 hid 键。)
export default {
head: {
titleTemplate: '%s - Nuxt',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ hid: 'description', name: 'description', content: 'Meta description' },
],
},
}
export default defineNuxtConfig({
app: {
head: {
titleTemplate: '%s - Nuxt',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ name: 'description', content: 'Meta description' },
],
},
},
})
useHead 可组合函数Nuxt Bridge 提供了一个新的 Nuxt 3 元数据 API,可以通过新的 useHead 可组合函数访问。
<script setup lang="ts">
useHead({
title: 'My Nuxt App',
})
</script>
head() 属性和 useHead,因为它们可能会冲突。有关如何使用此可组合函数的更多信息,请参阅文档。
<script>
// if using options API `head` method you must use `defineNuxtComponent`
export default defineNuxtComponent({
head (nuxtApp) {
// `head` receives the nuxt app but cannot access the component instance
return {
meta: [{
name: 'description',
content: 'This is my page description.',
}],
}
},
})
</script>
head 接收 nuxt 应用程序,但无法访问组件实例。如果您的 head 中的代码尝试通过 this 或 this.$data 访问数据对象,您将需要迁移到 useHead 可组合函数。如果您想使用函数(以获得完全控制),则不能在 nuxt.config 中设置它,建议改为在您的 /layouts 目录中设置。
<script setup lang="ts">
useHead({
titleTemplate: (titleChunk) => {
return titleChunk ? `${titleChunk} - Site Title` : 'Site Title'
},
})
</script>