Github上でも様々議論がされているようですが、タイトル通り、Vue.jsと vue-apollo を利用した際の状態管理について質問です。

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

  1. Vuexを利用し、actionの中でApolloClientを利用する(
  2. apolloのcacheを利用する
  3. vue-stashを利用する
  4. apollo-link-stateを利用する(公式ページ

があると思います。

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

上記を踏まえ、1. を選択した際のデメリットや4. が推奨される理由などをご教授頂く/議論できればと思います。
※どこかに間違いがあれば、ご指摘をお願いします。