Я только начал с vue-apollo, и мне интересно, как оптимизировать использование запросов apollo. У меня есть некоторые компоненты, которые используют точно такой же запрос Apollo.
Сам запрос может быть в отдельном файле, поскольку он является просто константой:
export const accountByPath = gql`
query accountByPath($path: String!) {
account: accountByPath(path: $path) {
id
name
}
}`
;
Он может легко использоваться внутри моего компонента:
<script>
export default {
props: ['path'],
apollo: {
account: {
query: accountByPath,
variables() {
return {path: this.path}
},
subscribeToMore: {
document: updateAccountSubscription,
variables() {
return {
path: this.path,
}
},
}
}
}
}
</script>
Iне хочу повторять это определение в каждом компоненте, который его использует. Но как мне перенести полное определение Аполлона? Сначала я пытался извлечь определение в функцию, но это не сработало:
<script>
function getQuery(path) {
return {
query: accountByPath,
variables() {
return {path: path}
},
subscribeToMore: {
document: updateAccountSubscription,
variables() {
return {
path: path,
}
},
}
}
};
export default {
props: ['path'],
apollo: {
account: () => getQuery(this.path)
}
}
</script>
Итак, как я могу использовать одно и то же определение запроса, включая переменные и подписку?