generated at
Vue3 Composition API

>「”なぜ” Composition APIを使うのか」
> その理由は、
> 「ロジックの抽出と再利用」をするためです。
>
>「ロジックの抽出と再利用」が必要な理由は、
> 複雑に肥大化したコンポーネントを、小分けにして関心事で分別し、クリーンな状態に整理するためです。

>これまでのVue2.xでは、「複数のコンポーネント間でロジックを抽出して再利用するためのクリーンでコストのかからないメカニズム」が欠如していました。
>これを解決するのが、Composition APIです。
>
> Composition APIによって、コンポーネントのコードを整理する際に、開発者により高い柔軟性を提供します。
> コンポーネント間で、ロジックや状態を抽出して再利用することが、簡単になります。
>
> SFCに記述するのはViewの見た目に関することだけにして、ロジックや状態を外部に切り出せるようになるのです。
コンポーネント間でロジックを抽出して再利用できるようになる
ロジックを抽出することで、単体テストが実行しやすくなる
TypeScript単体ファイルにできる

>つまり、Composition APIは、肥大化したコンポーネントを小さく切り刻むための聖剣なのです。
肥大化したコンポーネントを小さく分割するための剣
小さいコンポーネントで無理に使う必要はないし、使うと複雑になる


setup 関数が肝
setup()では、thisが参照できない
ref()関数を使って reactiveにする
ref()とreactive()の違いはややこしいので注意。
mounted や computed などを setup でまとめることができる


>みなさんは、VueのProviderパターン(provide/inject)って使ったことありますか?
composition api を使ってコンポーネントから状態とロジックを抽出したとして、どうやって状態を共有するのか?の解決策
>Composition APIで「状態とロジックを切り出して」Providerで「運ぶ」って感じです。
provide とkeyを指定して、子孫たちに状態を提供する
受信側は inject で受け取る
Vue.js2系からある機能なので、3系から変わる可能性あり
>まとめ
> Composition APIを使って、散らかった部屋の荷物をダンボールに梱包して、外に出そう。
> Composition APIを使って梱包した荷物を運ぶのがProviderの役目
> Providerで、親コンポーネントから子コンポーネントに共通の状態を簡単に受け渡すことができる。
> Prop渡しと違ってバケツリレーをする必要がない。
> 今後、Vue3ではProviderの改善が進むと予想