Github上でも様々[議論](https://github.com/Akryum/vue-
apollo/issues/1400)がされているようですが、タイトル通り、Vue.jsと `vue-apollo`
を利用した際の状態管理について質問です。

vueとapolloを共存した際、componentの中にgqlを書いてしまうことで、状態管理のメソッドがVue側とApollo側の2つになることが問題となると認識していますが、これに対する現状の手段としては、

  1. Vuexを利用し、actionの中でApolloClientを利用する（[例](https://markus.oberlehner.net/blog/combining-graphql-and-vuex/)）
  2. [apolloのcache](https://www.apollographql.com/docs/react/advanced/caching.htm)を利用する
  3. [`vue-stash`](https://github.com/cklmercer/vue-stash)を利用する
  4. `apollo-link-state`を利用する（[公式ページ](https://www.apollographql.com/docs/link/links/state.html)）

があると思います。

Vue.jsにさほど慣れていない身としては、1.
のVuexを利用する方法がシンプルで、Vueに精通していない人にも可読性が高くメンテナブルに感じていますが、公式では4. が推奨されているように感じます。

上記を踏まえ、1. を選択した際のデメリットや4. が推奨される理由などをご教授頂く/議論できればと思います。  
※どこかに間違いがあれば、ご指摘をお願いします。
CC BY-SA 4.0
2018-12-03T01:42:56.593
50841
2019-07-13T09:01:43.830
2019-07-13T09:01:43.830
9008
31263
question
javascript vue.js redux apollo graphql
Vue.js(SPA) * Apollo(GraphQL) における状態管理の方法について