【发布时间】:2022-11-11 09:09:19
【问题描述】:
问题是 head() 似乎在 async fetch() 之前执行,这在尝试插入页面的元数据和标题时会导致错误。我知道 asyncData 存在,但它在路由转换级别阻止页面加载的事实使它提供了如此糟糕的用户体验(在连接不良的移动设备中,页面转换可能会被阻止几秒钟)并提醒旧的 PHP 渲染网站,而不是现代SPA。另一方面,Nuxt fetch() 虽然仍然是服务器端渲染页面,但会暴露$fetchState.pending 并可以展示显示页面骨架的即时页面转换(从而使用户体验更好)。我遇到的唯一问题是这个带有 head() 数据的问题。这个问题是可以解决的,还是只是使用 fetch() 而不是 asyncData() 的一个无法解决的缺点?
重要提示:我指的是 Nuxt 的新 fetch 方法,而不是旧的。
不起作用的示例代码:
data() {
return {
car: null,
}
},
async fetch() {
this.car = await this.$axios.$get('/cars/' + this.$route.params.id)
},
head() {
return {
title: this.car.name,
}
},
【问题讨论】:
-
在您的示例中,您使用的是旧版。我不确定这是否可行,因为
fetch()可以在页面和组件上使用。所以,我不确定如何为Button.vue定义head会起作用。它适用于页面看起来是合法的。另外,不确定这是否可行? github.com/ihavecoke/nuxt-seo-meta 从未尝试过。 -
您总是可以静态设置它,或者以后以某种方式完成它。
-
你是对的。我提供的代码 sn-p 使用的是旧代码。我编辑了这个问题。我正在尝试在页面级别设置数据。我会看看你的链接。谢谢