Vue apollo decorators

Use decorators to create Vue Apollo smart queries

Version: 2.0.0 Updated: 05/22/2020

By: stefanwimmer128 License: ISC

Downloads Last 30 Days: 206

Vue Apollo Decorators

Use decorators to create Vue Apollo smart queries

Documentation

Install

yarn add vue-apollo-decorators
npm i vue-apollo-decorators
<script src="https://unpkg.com/vue-apollo-decorators@2.0.0"></script>

Usage

There is currently 1 decorator.

@SmartQuery(options: DocumentNode | VueApolloQueryDefinition) decorator

import gql from "graphql-tag";
import { SmartQuery } from "vue-apollo-decorator";
import { Vue, Component } from "vue-property-decorator";

@Component
export default class YourComponent extends Vue {
    @SmartQuery<YourComponent, Todo.Query, Todo.Variables>({
        query: gql`
            query Todo($id: String!) {
                todo(id: $id) {
                    id
                    title
                }
            }
        `,
        variables() {
            return {
                id: this.id,
            };
        },
    })
    todo: Todo;

    id: number = 0;
}

is equivalent to

export default {
    apollo: {
        todo: {
            query: gql`
                query Todo($id: String!) {
                    todo(id: $id) {
                        id
                        title
                    }
                }
            `,
            variables() {
                return {
                    id: this.id,
                };
            },
        },
    },
};

@SubscribeToMore(options: SubscribeToMoreOptions) decorator

import gql from "graphql-tag";
import { SmartQuery, SubscribeToMore } from "vue-apollo-decorator";
import { Vue, Component } from "vue-property-decorator";

@Component
export default class YourComponent extends Vue {
    @SmartQuery(gql`{ todos { id, title } }`) todo: Todo;
    @SubscribeToMore({
        document: gql`
            subscription TodoSubscription {
                todo {
                    id,
                    title,
                }
            }
        `,
        updateQuery(prevData, { subscriptionData }) {
            return [...prevData, ...subscriptionData];
        },
    })
    todos: Todo;
}

is equivalent to

export default {
    apollo: {
        todos: {
            query: gql`{ todos { id, title } }`,
            subscribeToMore: [
                {
                    document: gql`
                        subscription TodoSubscription {
                            todo {
                                id
                                title
                            }
                        }
                    `,
                    updateQuery(prevData, { subscriptionData }) {
                        return [...prevData, ...subscriptionData];
                    },
                },
            ],
        },
    },
};

License

ISC License

Categories: Vue js