Today we’ll learn how to integrate
apollo-client 2with Vue.js usingvue-apollo.
Installation
apollo-client has numbers of dependencies that need to be setup in your current Vue CLI project.
npm install --save vue-apollo graphql apollo-client apollo-link apollo-link-http apollo-cache-inmemory graphql-tag
Usage
- Set up an 
ApolloClientin our main.js. 
import { ApolloClient } from 'apollo-client'
import { createHttpLink } from 'apollo-link-http'
import { InMemoryCache } from 'apollo-cache-inmemory'
// HTTP connection to the API
const httpLink = createHttpLink({
  // You should use an absolute URL here
  uri: 'http://localhost:3020/graphql',
})
// Cache implementation
const cache = new InMemoryCache()
// Create the apollo client
const apolloClient = new ApolloClient({
  link: httpLink,
  cache,
})
- Install the 
VueApolloplugin into Vue 
import Vue from 'vue'
import VueApollo from 'vue-apollo'
Vue.use(VueApollo)
- The 
ApolloProviderholds the Apollo client instances that can then be used by all the child components. 
const apolloProvider = new VueApollo({
  defaultClient: apolloClient,
})
The final step
Extracting the apollo component to a single file, create a file called apollo.js in src/graphql/apollo.js and add
//apollo.js 
// This is everything we need to work with Apollo 2.0.
import Vue from "vue";
import { ApolloClient } from "apollo-client";
import { HttpLink } from "apollo-link-http";
import { InMemoryCache } from "apollo-cache-inmemory";
import VueApollo from "vue-apollo";
// Register the VueApollo plugin with Vue.
Vue.use(VueApollo);
// Create a new HttpLink to connect to your GraphQL API.
// According to the Apollo docs, this should be an absolute URI.
const httpLink = new HttpLink({
    uri: `http://localhost:3020/graphql`
});
// I'm creating another variable here just because it makes it easier to add more links in the future.
const link = httpLink;
// Create the apollo client
const apolloClient = new ApolloClient({
    // Tells Apollo to use the link chain with the http link we set up.
    link,
    // Handles caching of results and mutations.
    cache: new InMemoryCache(),
    // Useful if you have the Apollo DevTools installed in your browser.
    connectToDevTools: true
});
const apolloProvider = new VueApollo({
    // Apollo 2.0 allows multiple clients to be enabled at once.
    // Here we select the default (and only) client.
    defaultClient: apolloClient
});
export default apolloProvider;
Add it to your app with the apolloProvider option, Now our main.js will look like:
//main.js
import Vue from "vue";
import App from "./App.vue";
import apolloProvider from "./graphql/apollo";
new Vue({
  el: '#app',
  // inject apolloProvider here like vue-router or vuex
  apolloProvider,
  render: h => h(App),
})
You are now ready to use Apollo in your components!
For more details, see the documentation on apollo-vue and Apollo.
    
Top comments (0)