Vue 3.0 Composition API を利用した Store と Composables の違い
by
Toru Eguchi
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Vue 3.0 Composition API を利用した Store と Composables の違い 江口 徹(@egurinko) Vue.js for 2020
Slide 2
Slide 2 text
● 大学 VR × 高齢者で研究 ● 新卒で某通信会社 インフラ担当 ● Code Chrysalis という BootCamp を3ヶ月 ● 某通信会社復帰 SIer としてフロント開発 ● ギフティ入社半年 @egurinko (江口 徹)
Slide 3
Slide 3 text
お話しすること 01 02 03 04 Vue3.0 の疑問 Composition API の紹介 疑問解決への きっかけ まとめ
Slide 4
Slide 4 text
巷では、 ● Composition API で 状態管理が出来るよう になる? 疑問の始まり
Slide 5
Slide 5 text
疑問の始まり LinusBorg 氏の demo を見ると、 同じ Composition API を利用した composables と store が 存在する
Slide 6
Slide 6 text
どうやら、Composition API には、2 つの使い方がある この違いは一体なんなんだろう?
Slide 7
Slide 7 text
ということで、 試して、 探ってみた https://what-is-todays-dinner.herokuapp.com
Slide 8
Slide 8 text
https://what-is-todays-dinner.herokuapp.com ある特定の機能の Composition API の紹介
Slide 9
Slide 9 text
https://what-is-todays-dinner.herokuapp.com ある特定の機能の ● 状態 Composition API の紹介
Slide 10
Slide 10 text
https://what-is-todays-dinner.herokuapp.com ある特定の機能の ● 状態 ● 振る舞い をモジュール化させるた めのAPI Composition API の紹介
Slide 11
Slide 11 text
https://what-is-todays-dinner.herokuapp.com Composition API を利用する側 インポートして、関数を呼び出すだけ 各所で 使い回せば Store になる!
Slide 12
Slide 12 text
https://what-is-todays-dinner.herokuapp.com ますます、 Composables と Store の 違いがわからなくなっていた
Slide 13
Slide 13 text
ローダの機能をモジュール化した useLoader の composition function を実装した しかし、あるコンポーネントで Loader の State を 変更しても、 Loader が回らない https://what-is-todays-dinner.herokuapp.com 違いに気づいたきっかけ
Slide 14
Slide 14 text
- App.vue - Recipes.vue - Loader.vue https://what-is-todays-dinner.herokuapp.com 原因 コンポーネントツリー useLoader() で state の変更 useLoader() で state を参照
Slide 15
Slide 15 text
- App.vue - Recipes.vue - Loader.vue https://what-is-todays-dinner.herokuapp.com 原因 コンポーネントツリー useLoader() で state の変更 useLoader() で state を参照 それぞれのスコープがグローバルではなかった・・・
Slide 16
Slide 16 text
https://what-is-todays-dinner.herokuapp.com 単純に作成した composition function のスコープは、 グローバルではない
Slide 17
Slide 17 text
https://what-is-todays-dinner.herokuapp.com 良く確認したら、 Linus さんの demo では、 Store として利用したい項目は provide でグローバルスコープへ inject を利用して各コンポーネントで 利用するようになっていた store/ 配下
Slide 18
Slide 18 text
https://what-is-todays-dinner.herokuapp.com つまり、composables と store の境界とは グローバルで参照するべきものは、 composition api と provide/inject を利用して store へ、 グローバルで必要のない状態や振る舞いは、 composables へ
Slide 19
Slide 19 text
https://what-is-todays-dinner.herokuapp.com 考えてみたら、 Store はグローバルで状態を管理したい って当たり前だよね
Slide 20
Slide 20 text
https://what-is-todays-dinner.herokuapp.com