Vuexを学習してて理解しづらかったので、概念をざっくりとですが、まとめてみました。
##Vuexとは
Vue.jsアプリケーションのための状態管理パターン+ライブラリです。
####Vuexを使用せず末端のコンポーネントから末端のコンポーネントにデータを渡す場合
$emitで親にデータをあげて、もう一度$emitで親に上げて、propsでデータを子供に渡し、もう一度propsで子供にデータを渡す・・・というように、コンポーネントツリーが深くなればなるほど、末端のコンポーネント同士のデータのやりとりがしづらくなります。
#####Vuexを使用した場合
Vuexを使用することで、親コンポーネントにデータを渡して・・といったことをせずとも簡単にデータのやり取りができるようになります。
##Vuexのデータの流れ
VuexはFluxに影響を受けているライブラリで、データフローが単方向になるように設計されています。
##Fluxとは
Facebook社が提唱してるクライアントサイドのWebアプリケーション開発のためのアーキテクチャです。
単方向のデータフローを構築することで、開発規模が大きくなってもデータの流れを見失いづらいことが特徴です。
※この記事に詳しいこと書いてます!
MVCを例に見ると小さなアプリケーションでは適していますが、大規模開発になるとデータの流れが追いにくくなりデバックしづらくなるデメリットがあります。
そこで単方向のデーターフローを設計することでデータの変更を追いやすくしてくれてるのがFluxです!
##感想
Fluxの記事を読んでVuexに関しての理解が深まったかなと思いました!
Vuexは個人で作るような小規模なアプリだと返って記述がコードが冗長になるなどデメリットもあるようですが、仕組みを理解するためにも使っていきたいなと思いました!!