我正在 Nuxt 中使用 Apollo 获取一些数据。不知何故,当导航到该页面时,我收到一个错误
Cannot read property 'image' of undefined
当我刷新页面时,一切都按预期工作。
我发现一些人有类似的问题,但似乎没有解决方案对我有用:/
这是我现在的模板文件:
/products/_slug.vue
<template>
<section class="container">
<div class="top">
<img :src="product.image.url"/>
<h1>{{ product.name }}</h1>
</div>
</section>
</template>
<script>
import gql from 'graphql-tag'
export default {
apollo: {
product: {
query: gql`
query Product($slug: String!) {
product(filter: { slug: { eq: $slug } }) {
slug
name
image {
url
}
}
}
`,
prefetch({ route }) {
return {
slug: route.params.slug
}
},
variables() {
return {
slug: this.$route.params.slug
}
}
}
}
}
</script>
除非我刷新页面,否则 $apolloData 基本上是空的。任何想法将不胜感激
编辑 又近了一步(我认为)。以前,第一次导航到页面时,所有内容(image.url 和名称)都是未定义的。
我补充说:
data() {
return {
product: []
};
}
在我的导出顶部,现在至少总是定义名称,所以如果我删除图像,一切都会按预期工作。只是 image.url 一直未定义。
我注意到的一件事(不确定有多相关)是这个问题只发生在使用 , 如果我使用普通的 a 标签它可以工作,但当然会带走 vue 的魔力。
EDIT-2 因此,如果我将 Nuxt 降级到 1.0.0 版本,一切正常