Open aokabin opened 4 years ago
ちょっとわかんないけど、この辺をベースに色々試してみる
こっちのほうがいいかな
$ yarn add @nuxtjs/apollo
nuxt.config.js の設定、これが最小限感?
apollo: {
clientConfigs: {
default: {
httpEndpoint: 'https://graphql.datocms.com',
},
}
},
<template>
<table>
<tr>
<th>ID</th>
<th>名前</th>
</tr>
<tr v-for="pockemon in pockemons" :key="pockemon.id">
<td>{{ pockemon.id }}</td>
<td>{{ pockemon.name }}</td>
</tr>
</table>
</template>
<script>
import getPockemonsGql from '~/apollo/queries/getPockemons.graphql'
export default {
data() {
return {
pockemons: []
}
},
apollo: {
pockemons: {
query: getPockemonsGql
}
}
}
</script>
こんなのを書いた
query GetPockemons {
pokemons(first: 1) {
id
name
}
}
これも
でも動かず
らしい
pockemonだと思ってたけど、pokemonなの!!!
typoでした、動いた
確かに使うのは簡単だな...
pluginsあたりで、apollo clientを宣言してあげて、それを機軸に使い回す、みたいな感じになるイメージかな?
一応fetchPolicyあるなぁ
これcacheされてるんかな?
ちょっと書き出して、サーバーサイドなくしたときどうなるかみてみよう
固定データだ、毎回リクエストしているわけじゃないかも
あー、ちょっと何かが変わってきてる気がする、よくわかってなかったってことだ
ちょっと整理しよう
つまり、静的ファイルを生成するんだったらGridsomeを使ったほうがいいと
まぁ普通のサービスでもnuxt.js使うと思うので、nuxt使うとして
キャッシュするどうこうは、サボさんが見せてくれた方法でいけそう
キャッシュ機構をpluginsで設定しつつ
import gql from 'graphql-tag'
import { IntrospectionFragmentMatcher } from 'apollo-cache-inmemory'
import introspectionQueryResultData from '~/apollo/fragmentTypes.json'
const fragmentMatcher = new IntrospectionFragmentMatcher({
introspectionQueryResultData
})
export default function(ctx) {
return {
httpEndpoint: `${process.env.GRAPHQL_HTTP_ENDPOINT}/graphql?code=${process.env.GRAPHQL_HTTP_ENDPOINT_KEY}`,
browserHttpEndpoint: '/graphql',
resolvers: {},
inMemoryCacheOptions: {
fragmentMatcher,
cacheRedirects: {
Query: {
shop: (_, args, { getCacheKey }) => {
return getCacheKey({ _typename: 'Shop', id: args.id })
},
dailyReport: (_, args, { getCacheKey }) => {
return getCacheKey({ __typename: 'Calendar', id: args.id })
}
}
}
}
}
}
apolloのpluginsに追加する形
apollo: {
clientConfigs: {
default: '~/plugins/apollo-client-config.js'
}
}
@client
ディレクティブ、これはクライアント内でquery発行できるやつらしい
データを取得するてきな
Gridsome+WPだと、gridsome developすることで、開発中のWP見れるかも? WPのデータアップデートしたら、GraphQLで取得できるデータが変わって、結果として表示できる的な感じになる気がした
lucasbento/graphql-pokemon: Get information of a Pokémon with GraphQL!
ポケモン情報を取得できるGraphQLを使って、データを取得しつつ、Apollo Clientを使って高速にデータをストアする