<template>
  <ApolloMutation
    :mutation="mutation"
    :update="updateCache"
  >
    <template v-slot="{ mutate, loading, error }">
      <q-checkbox
        v-model="todoToggle"
        @input="mutate"
      />
      <p v-if="error">There has been an error<br>{{error}}</p>
    </template>
  </ApolloMutation>
</template>
<script>
import { queries, mutations } from 'src/graphql/Todos'
....

  data () {
    return {
      todoToggle: this.completed,
      mutation: mutations.toggleTodo
    }
  },

  methods: {
    updateCache (store, { data: { toggleTodo } }) {
      const data = store.readQuery({ query: queries.getTodos })
      data.todos.find((todo) => {
        if (todo.id === this.id) {
          todo.completed = !todo.completed
        }
      })
      store.writeQuery({ query: queries.getTodos, data })
    }
  }
}
</script>