# ApolloSubscribeToMore
Vous pouvez souscrire à davantage de donnée avec le composant ApolloSubscribeToMore
(ou apollo-subscribe-to-more
). Vous pouvez en utiliser autant que vous voulez dans un composant <ApolloQuery>
.
TIP
Si la mise à jour est liée à un objet existant (par exemple, changer la valeur d'un champ), updateQuery
n'est pas requis, puisque le client Apollo sera capable de mettre le cache Ă jour automatiquement.
Voici un exemple :
<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 }) {
// Le résultat précédent est immuable
const newResult = {
messages: [...previousResult.messages],
}
// Ajoute la question dans la liste
newResult.messages.push(subscriptionData.data.messageAdded)
return newResult
},
},
}
</script>
Consultez ApolloQuery pour en savoir plus sur comment Ă©crire des requĂȘtes GraphQL dans le template.
Consultez la référence API pour connaßtre toutes les options disponibles.
# Exemples avec updateQuery
Ajouter un nouvel élément en cache :
methods: {
onMessageAdded (previousResult, { subscriptionData }) {
// Le résultat précédent est immuable
const newResult = {
messages: [...previousResult.messages],
}
// Ajout la question dans la liste
newResult.messages.push(subscriptionData.data.messageAdded)
return newResult
}
}
Retirer un élément du cache :
methods: {
onMessageAdded (previousResult, { subscriptionData }) {
const removedMessage = subscriptionData.data.messageRemoved
const index = previousResult.messages.findIndex(
m => m.id === removedMessage.id
)
if (index === -1) return previousResult
// Le résultat précédent est immuable
const newResult = {
messages: [...previousResult.messages],
}
// Retire la question de la liste
newResult.messages.splice(index, 1)
return newResult
}
}
â ApolloMutation Clients multiples â