Я создаю запрос GraphQL, используя vue-apollo
и graphql-tag
.
Если я жестко закодирую нужный мне идентификатор, он будет работать, но я бы хотел передать текущий идентификатор маршрута в Vue Apollo в качестве переменной.
Работает (жестко заданный идентификатор):
apollo: {
Property: {
query: PropertyQuery,
loadingKey: 'loading',
variables: {
id: 'my-long-id-example'
}
}
}
Однако я не могу этого сделать:
Не работает (пытается получить доступ к this. $ route для идентификатора):
apollo: {
Property: {
query: PropertyQuery,
loadingKey: 'loading',
variables: {
id: this.$route.params.id
}
}
}
Я получаю сообщение об ошибке:
Uncaught TypeError: невозможно прочитать параметры свойства undefined
Есть какой-либо способ сделать это?
РЕДАКТИРОВАТЬ: полный блок сценария, чтобы было легче понять, что происходит:
<script>
import gql from 'graphql-tag'
const PropertyQuery = gql`
query Property($id: ID!) {
Property(id: $id) {
id
slug
title
description
price
area
available
image
createdAt
user {
id
firstName
lastName
}
}
}
`
export default {
name: 'Property',
data () {
return {
title: 'Property',
property: {}
}
},
apollo: {
Property: {
query: PropertyQuery,
loadingKey: 'loading',
variables: {
id: this.$route.params.id // Error here!
}
}
}
}
</script>