在阿波罗查询(vue + nuxt)中,“ this”是“ undefined”

时间:2020-06-19 21:46:11

标签: vue.js graphql vue-apollo

我将GraphQL(Symfony + API平台)与Vue Apollo和Nuxt一起使用。

我有一个问题的详细页面,并且想加载特定的问题,但是我总是得到Cannot read property 'issueId' of undefined,因为thisundefined。这是我的页面的相关脚本部分

<script>
import gql from 'graphql-tag'

export default {
  data() {
    return {
      issueId: null
    }
  },
  created() {
    this.issueId = this.$route.params.id
  },
  apollo: {
    issue: {
      query: gql`
        query($issueId: ID!) {
          issue(id: $issueId) {
            id
            description
          }
        }
      `,
      variables: {
        issueId: this.issueId
      }
    }
  }
}
</script>

当我将issueId设置为issues/3时,它会起作用

variables: {
    issueId: 'issues/3'
}

2 个答案:

答案 0 :(得分:2)

我找到了解决方法

here所述,如果只需要转弯

variables() {
  return {
    issueId: this.issueId
  }
}

进入

Compare with Working Tree

但是我不明白其中的区别

答案 1 :(得分:0)

使用console.log()中的created检查值...

...可能(多年不使用vue)应该单独使用$route.params.id,而不能使用this ...

...您可以直接在variables

中使用此值