Vue Fes Japan 2023のLT登壇用の資料。
Composition API時代のPub/Subパターンでの状態管理Vue Fes Japan 20232023/10/28 @fuqda
View Slide
U Frontend Developer@Paytner Inc4U Vue Fes Japan2023 ボランティアスタッフU GitHub:@Shigeyuki-fukud6U X(旧Twitter):@fuqda90About me
目次UX Pub/Sub概IHX 状態どこで持つか問0'X Pub/Subで状態管理したい場#X Vuex / PiniaでやるべきかRBX Composition APIでPub/Subしてみた場X まとめ
目次Å Pub/Sub概要2. 状態どこで持つか問FC Pub/Subで状態管理したい場"4 Vuex / Piniaでやるべきか$b Composition APIでPub/Subしてみた場(' まとめ
Pub/Sub概要Pub/SubPublisher(イベント発行者)が発行したイベントをEvent Broker(イベント仲介者)がルーティングして、Subscriber(イベント購読者)に伝達するイベント駆動型アーキテクチャのデザインパターンのこと。イベントAPublisher(イベント発行者)イベントBイベントCイベントAEvent Broker(イベント仲介者)Subscriber(イベント購読者)イベントBイベントC
目次HR Pub/Sub概要3. Pub/Subで状態管理したい場'R Vuex / PiniaでやるべきかER Composition APIでPub/Subしてみた場R まとめ2. 状態どこで持つか問題
状態どこで持つか問題原則、stateは親コンポーネントに寄せる・基本的にバックエンド側と送受信する項目は、 親(/pages)コンポーネントのみ持つことを許可。 ・子(/pagesを構成するパーツ)コンポーネントには、 状態を持たない方がシンプルになる・親や子にstateが点在すると保守性が悪化するので、 例外は許容しつつ基本は避けること/pages配下のコンポーネントコンテナコンポーネント各種フォーム用コンポーネント〇〇連携 〇〇を連携解除〇〇設定
目次IT Pub/Sub概要2. 状態どこで持つか問$4. Vuex / PiniaでやるべきかF6T Composition APIでPub/Subしてみた場T まとめqT Pub/Subで状態管理したい場面
Pub/Subで状態管理したい場面コンポーネントがネストしている中で子コンポーネントのUI操作をトリガーにモーダルを表示したい場面親コンポーネント (/pages) で状態を持つ前提とすると モーダルの開閉フラグをネストしてるコンポーネント間でバケツリレーするのはしんどい.../pages配下のコンポーネントコンテナコンポーネント各種フォーム用コンポーネントボタンを押下モーダルを表示〇〇連携 〇〇を連携解除〇〇設定
目次DI Pub/Sub概要2. 状態どこで持つか問"I Pub/Subで状態管理したい場面4I Composition APIでPub/Subしてみた場ÂÄI まとめ4. Vuex / PiniaでやるべきかP
Vuex / Piniaでやるべきか?いきなり結論Vuex / PiniaをComposition APIで 代替実装可能なので不要!※導入するのは簡単だが、剥がすのはかなりエネルギーが必要なので入れなくて済むなら入れないほうが長期的に見た際に吉というのが所感
目次@G Pub/Sub概要2. 状態どこで持つか問G Pub/Subで状態管理したい場面4. Vuex / Piniaでやるべきか?6. まとめ5. Composition APIでPub/Subしてみた場合
Composition APIでPub/Subしてみた場合今回の発表のComposition APIのPub / Subサンプルコードはこちらhttps://github.com/Shigeyuki-fukuda/nuxt-pub-sub-sample
Composition APIでPub/Subしてみた場合今回の発表のComposition APIのPub / Subサンプルコードの概要
Composition APIでPub/Subしてみた場合※時間があったら...今回のサンプルコードを使ったデモアプリを動かしてみるhttps://vue-fes-japan-2023-pub-sub-demo.netlify.app
目次QU Pub/Sub概要2. 状態どこで持つか問&#U Pub/Subで状態管理したい場面4. Vuex / Piniaでやるべきか?5. Composition APIでPub/Subしてみた場合6. まとめ
まとめ・Composition APIをPub/Subパターンで実装することで モーダルの開閉をVuex / Piniaを使わず実装出来た・今回のパターン以外でもネストしてるコンポーネントから 親コンポーネントの状態を更新する際にPub/Subパターン が便利なのでオススメ