GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN...

30
@NIkkitaFTW GRAPHQL + APOLLO + VUE = MAGIC

Transcript of GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN...

Page 1: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

GRAPHQL + APOLLO + VUE = MAG IC

Page 2: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

I HAVE UN ICORN S T I CKERS

Page 3: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into
Page 4: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

MY N AME I S S ARA

Page 5: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NikkitaFTW

Front End developer at YLD

Really into shitty movies

Really into football

Lives out of airbnb’s

*please y’all need to watch troll 2*

Page 6: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

L I VES IN THE M IDDLE OF NOWHERE

Page 7: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

I ADORE VUE

Page 8: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

I F EEL L IKE VUE I S L IKE THE HARRY PO TTER OF J S L IBRAR IES

Page 9: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

HAVE YOU EVER MET ANYONE THAT HATES HARRY PO TTER ?

Page 10: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

PO INT PROVEN

Page 11: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

AL SO! PERFECT DAY

Page 12: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

https://hubble.js.org/react-vs-vue/

Page 13: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

🦄🎉#🎉🦄

Page 14: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into
Page 15: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into
Page 16: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

HOW?

Page 17: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into
Page 18: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

import Vue from "vue" import App from "./App" import ApolloClient from "apollo-boost" import VueApollo from "vue-apollo"

const apolloProvider = new VueApollo({ defaultClient: new ApolloClient({ uri: "https://api.graphcms.com/simple/v1/awesomeTalksClone" }) })

Vue.use(VueApollo)

new Vue({ el: "#app", provide: apolloProvider.provide(), render: h =>" h(App) })

Page 19: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

DONE!

Page 20: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

QUERY COMPONENT S

Page 21: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

<template> <ApolloQuery :query="require('../queries/SPEAKERS.gql')"> <template slot-scope="{ result: { loading, error, data } }"> <span v-if="loading"> Loading </span> <div v-if="data && !loading"> <ul v-if="data.allSpeakers.length"> <li v-for="s in data.allSpeakers" :key="s.id"> <img :src="s.photo.url" :alt="s.name" /> <span>{{s.name}}</span> </li> </ul> <div v-else class="empty"> No Speakers match your search </div> </div> </template> </ApolloQuery> </template>

Page 22: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

MUTAT ION COMPONENT S

Page 23: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

mutation createSpeaker($name: String!) { createSpeakers(name: $name) { id name } }

Page 24: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

<template> <ApolloMutation :mutation=“require('../queries/ADD_SPEAKER.gql')"

:variables="{ name }” :update=“onUpdate" @done="onDone">

<template slot-scope="{ mutate, loading, error }"> <form @submit.prevent="mutate"> <input type="text" placeholder=“Name" v-model="name" /> <button type="submit">Add Speaker</button> <span v-if="error">Failed</span> <span v-if="loading">Loading</span> </form> </template> </ApolloMutation> </template>

Page 25: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

THE UPDATE FUNCT ION

Page 26: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

methods: { onDone() { this.name = '' }, onUpdate(cache,{ data: { createdSpeaker }}) { const { allSpeakers } = cache.readQuery({ query: SPEAKERS }) cache.writeQuery({ query: SPEAKERS, data: { allSpeakers: allSpeakers.concat({ ... createdSpeaker, photo: { url: 'http://placekitten.com/100/100', __typename: 'Assets', }, }), }, }) }, },

Page 27: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

DEMOhttps://codesandbox.io/s/lpoy839pm

Page 28: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

@NIkkitaFTW

APOLLO - L INK - S TATE DEMO

https://codesandbox.io/s/x2jr96r8pp

Page 29: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into
Page 30: GRAPHQL + APOLLO + VUE = MAGIC · GRAPHQL + APOLLO + VUE = MAGIC @NIkkitaFTW I HAVE UNICORN STICKERS @NIkkitaFTW MY NAME IS SARA @NikkitaFTW Front End developer at YLD Really into

THANK YOU$https://apollo-vue-love.now.sh/