質問編集履歴

1

理由と根拠について説明が抜けていたので記載します。

2020/08/25 18:49

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- vue3.0について教えてください。
1
+ Vue3.0のcompostion APIとvuexの共存のさせ方、使い分け方ついて教えてください。
test CHANGED
@@ -3,3 +3,157 @@
3
3
  vue3.0になったときにvuexのような書き方はあまりしない方がいいのではないか?と感じています。
4
4
 
5
5
  vue3.0で実際にアプリケーションを作っている方の意見が知りたいです。
6
+
7
+
8
+
9
+ 以下追記になります。
10
+
11
+ 理由と根拠について説明が抜けていたので記載します。
12
+
13
+
14
+
15
+
16
+
17
+ [https://composition-api.vuejs.org/api.html#setup](https://composition-api.vuejs.org/api.html#setup) からの引用になります。
18
+
19
+
20
+
21
+ ```
22
+
23
+ <template>
24
+
25
+ <div>{{ count }} {{ object.foo }}</div>
26
+
27
+ </template>
28
+
29
+
30
+
31
+ <script>
32
+
33
+ import { ref, reactive } from 'vue'
34
+
35
+
36
+
37
+ export default {
38
+
39
+ setup() {
40
+
41
+ const count = ref(0)
42
+
43
+ const object = reactive({ foo: 'bar' })
44
+
45
+
46
+
47
+ // expose to template
48
+
49
+ return {
50
+
51
+ count,
52
+
53
+ object
54
+
55
+ }
56
+
57
+ }
58
+
59
+ }
60
+
61
+ </script>
62
+
63
+ ```
64
+
65
+
66
+
67
+ [https://jsfiddle.net/n9jmu5v7/1269/](https://jsfiddle.net/n9jmu5v7/1269/) からの引用になります。
68
+
69
+
70
+
71
+ ```
72
+
73
+ <div id="app">
74
+
75
+ <p>{{ count }}</p>
76
+
77
+ <p>
78
+
79
+ <button @click="increment">+</button>
80
+
81
+ <button @click="decrement">-</button>
82
+
83
+ </p>
84
+
85
+ </div>
86
+
87
+ ```
88
+
89
+
90
+
91
+ ```
92
+
93
+ // make sure to call Vue.use(Vuex) if using a module system
94
+
95
+
96
+
97
+ const store = new Vuex.Store({
98
+
99
+ state: {
100
+
101
+ count: 0
102
+
103
+ },
104
+
105
+ mutations: {
106
+
107
+ increment: state => state.count++,
108
+
109
+ decrement: state => state.count--
110
+
111
+ }
112
+
113
+ })
114
+
115
+
116
+
117
+ new Vue({
118
+
119
+ el: '#app',
120
+
121
+ computed: {
122
+
123
+ count () {
124
+
125
+ return store.state.count
126
+
127
+ }
128
+
129
+ },
130
+
131
+ methods: {
132
+
133
+ increment () {
134
+
135
+ store.commit('increment')
136
+
137
+ },
138
+
139
+ decrement () {
140
+
141
+ store.commit('decrement')
142
+
143
+ }
144
+
145
+ }
146
+
147
+ })
148
+
149
+ ```
150
+
151
+
152
+
153
+ 前者がVue3.0から搭載されるCompostion APIという機能を使ったものです。
154
+
155
+ 後者が、vuexを使ったものです。
156
+
157
+ vueに対する理解が乏しいのですが、前者の方が短くかけているように見えるのが、圧倒的なメリットに感じています。
158
+
159
+ が、それだけではアプリケーションをうまく作ることができなかったり、設計上よくない点があったりなどがあれば教えていただけないでしょうか。