ApolloSubscribeToMore 组件
示例
vue
<template>
<ApolloQuery :query="...">
<ApolloSubscribeToMore
:document="gql => gql`
subscription messageChanged ($channelId: ID!) {
messageAdded (channelId: $channelId) {
type
message {
id
text
}
}
}
`"
:variables="{ channelId }"
:updateQuery="onMessageAdded"
/>
<!-- ... -->
</ApolloQuery>
</template>
<script>
export default {
data () {
return {
channel: 'general',
}
},
methods: {
onMessageAdded (previousResult, { subscriptionData }) {
// The previous result is immutable
const newResult = {
...previousResult,
messages: [
...previousResult.messages,
// Add the question to the list
subscriptionData.data.messageAdded,
],
}
return newResult
},
},
}
</script>
属性
document
: 包含订阅的 GraphQL 文档,或接收gql
标记作为参数并应返回转换后的文档的函数。variables
: 将自动更新订阅变量的对象。updateQuery
: 如果需要,用于更新查询结果的函数。