Child 元素在 nuxt/vue 中来自 apollo 的数据发生变化后不更新道具
Child element not updating props after change in data coming from apollo in nuxt/vue
更新:主要问题似乎是道具只更新一次。当 this.campaign.name 可用时,它们应该会更改。
我想动态更新标题和面包屑数据字段并在页面上显示它们。当前页面 page 显示 undefined 或 null。我该如何解决这个问题?
我试图创建一个计算值,但它似乎只更新一次(在头部和面包屑数据已经显示之后)。一个方法不起作用,因为我没有任何东西可以触发该方法。
解决这个问题的正确方法是什么?
我正在使用 nuxt generate 来部署应用程序。
export default {
components: { PageHeader },
middleware: 'authenticated',
data() {
return {
title: 'Campaigns' + this.campaignName,
breadcrumb: [
{
text: 'Campaigns',
href: '/'
},
{
text: this.campaignName,
href: '/'
}
],
campaign: ''
}
},
apollo: {
campaign: {
prefetch: true,
query: campaignQuery,
variables() {
return { id: this.$route.params.id }
}
}
},
computed: {
campaignName() {
return this.campaign && this.campaign.name
}
},
head() {
return {
title: this.title
}
}
}
</script>
您计算的 属性 campaignName
returns undefined
因为 this.campaign.name
未定义
campaignName() {
if(this.campaign && this.campaign.name) return "Campaigns" + this.campaign.name;
return "default value";
}
然后就可以直接在head中使用了
head() {
return {
title: this.campaignName
}
}
解决方案是将数据元素直接作为计算机 属性。 (所以没有重新计算)
export default {
components: { PageHeader },
middleware: 'authenticated',
data() {
return {}
},
apollo: {
campaign: {
prefetch: true,
query: campaignQuery,
variables() {
return { id: this.$route.params.id }
}
}
},
computed: {
title() {
return this.campaign && `Campaign: ${this.campaign.name}`
},
breadcrumb() {
return [
{
text: 'Campaign',
href: '/'
},
{
text: this.campaign && this.campaign.name,
href: '/'
}
]
}
},
head() {
return {
title: this.title
}
}
}
</script>
更新:主要问题似乎是道具只更新一次。当 this.campaign.name 可用时,它们应该会更改。
我想动态更新标题和面包屑数据字段并在页面上显示它们。当前页面 page 显示 undefined 或 null。我该如何解决这个问题?
我试图创建一个计算值,但它似乎只更新一次(在头部和面包屑数据已经显示之后)。一个方法不起作用,因为我没有任何东西可以触发该方法。
解决这个问题的正确方法是什么?
我正在使用 nuxt generate 来部署应用程序。
export default {
components: { PageHeader },
middleware: 'authenticated',
data() {
return {
title: 'Campaigns' + this.campaignName,
breadcrumb: [
{
text: 'Campaigns',
href: '/'
},
{
text: this.campaignName,
href: '/'
}
],
campaign: ''
}
},
apollo: {
campaign: {
prefetch: true,
query: campaignQuery,
variables() {
return { id: this.$route.params.id }
}
}
},
computed: {
campaignName() {
return this.campaign && this.campaign.name
}
},
head() {
return {
title: this.title
}
}
}
</script>
您计算的 属性 campaignName
returns undefined
因为 this.campaign.name
未定义
campaignName() {
if(this.campaign && this.campaign.name) return "Campaigns" + this.campaign.name;
return "default value";
}
然后就可以直接在head中使用了
head() {
return {
title: this.campaignName
}
}
解决方案是将数据元素直接作为计算机 属性。 (所以没有重新计算)
export default {
components: { PageHeader },
middleware: 'authenticated',
data() {
return {}
},
apollo: {
campaign: {
prefetch: true,
query: campaignQuery,
variables() {
return { id: this.$route.params.id }
}
}
},
computed: {
title() {
return this.campaign && `Campaign: ${this.campaign.name}`
},
breadcrumb() {
return [
{
text: 'Campaign',
href: '/'
},
{
text: this.campaign && this.campaign.name,
href: '/'
}
]
}
},
head() {
return {
title: this.title
}
}
}
</script>