TLDR:子路由的预渲染视图使用父元信息,但我希望他们使用子路由组件上定义的元信息。
我已经设置了一个 Nuxt/Vue 站点,该站点具有一个登录页面,它提供了一个项目网格,并且在我的文件/items/index.vue
中将子路由设置为该登录页面的子级。router.js
这些子路由在/items/index.vue
vianuxt-child
或router-view
组件中呈现为模式。子路由调用一个名为的组件,该组件/components/ItemsModal.vue
设置适当的元标记(标题、OG:数据等)
当我输入子路由的 URL 时,在父/items/index.vue
元信息的初始闪烁之后,元/头信息会按预期更新。但是,我的 SEO 信息显示的是父元/头信息,而不是子路由组件定义的更新信息。当我查看源代码时,我看到预渲染的交付页面确实有父信息,而不是子路由信息,也没有与子路由组件关联的任何内容。
任何人都有配置子路由以使用子路由组件中定义的头部信息进行预渲染的经验吗?我希望子路由先渲染其关联的组件,然后再在预渲染中调用它。
下面的代码,为了清楚起见被截断/修改。
路由器.js
{
path: '/items',
name: 'item-index',
component: ItemIndex,
children: [
{
path: ':slug',
component: ItemModal, // defined as a var earlier in file
name: 'item-modal'
}
],
alias: []
},
/item/index.js
<template lang='pug'>
ThePage
ItemGrid
nuxt-child
</template>
<script>
import ItemGrid from '~/components/ItemGrid'
export default {
components: {
ItemGrid
}
head() {
return {
title: 'Parent Title,
meta: [{
hid: 'description',
name: 'description',
content: 'Parent description'
}]
}
}
</script>
/item/index.js
<template lang='pug'>
ThePage
Item
</template>
<script>
import Item from '~/components/Item'
export default {
components: {
Item
}
head() {
return {
title: 'Child Title,
meta: [{
hid: 'description',
name: 'description',
content: 'Child description'
}]
}
}
</script>