回答編集履歴

1

追記

2018/12/02 08:36

投稿

karamarimo
karamarimo

スコア2551

test CHANGED
@@ -17,3 +17,75 @@
17
17
  >
18
18
 
19
19
  ```
20
+
21
+
22
+
23
+ # 追記
24
+
25
+
26
+
27
+ コンポーネントが、自身の prop の値を直接変更してはいけません。ではクリック時に type を変えるにはどうするかというと、type prop は親コンポーネントから与えられるので、親がクリックイベント発生時に type の値を変更します。
28
+
29
+
30
+
31
+ クリックするたびに`type`が`success`と`primary`の間を切り替わるコードの例です。
32
+
33
+ [Codesandbox Demo](https://codesandbox.io/s/zqwp96qnwm)
34
+
35
+ ```html
36
+
37
+ <template>
38
+
39
+ <div>
40
+
41
+ <el-button :type="buttonType" @click="toggleButtonType">Button</el-button>
42
+
43
+ </div>
44
+
45
+ </template>
46
+
47
+
48
+
49
+ <script>
50
+
51
+ export default {
52
+
53
+ data() {
54
+
55
+ return {
56
+
57
+ buttonType: 'success',
58
+
59
+ }
60
+
61
+ },
62
+
63
+ methods: {
64
+
65
+ toggleButtonType() {
66
+
67
+ this.buttonType = this.buttonType === 'success' ? 'primary' : 'success'
68
+
69
+ },
70
+
71
+ },
72
+
73
+ }
74
+
75
+ </script>
76
+
77
+ ```
78
+
79
+
80
+
81
+ 公式ガイドも読むといいと思います。
82
+
83
+ [単方向のデータフロー - Vue](https://jp.vuejs.org/v2/guide/components-props.html#%E5%8D%98%E6%96%B9%E5%90%91%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%83%95%E3%83%AD%E3%83%BC)
84
+
85
+
86
+
87
+ > 全てのプロパティは、子プロパティと親プロパティの間に、 単方向のバインディング を形成します: 親のプロパティが更新されると、子へと流れ落ちていきますが、それ以外の方法でデータが流れることはありません。これによって、子コンポーネントが誤って親の状態を変更することがなく、これによって、アプリのデータフローを 理解しづらい 可能性のある子コンポーネントによる誤った親の状態変更から、防ぎます。
88
+
89
+
90
+
91
+ > また、親コンポーネントが更新されるたびに、子コンポーネント内の全てのプロパティが最新の値へと更新されます。これは、子コンポーネント内において、プロパティを 変化させない ことを意味しています。それを行った場合、 Vue は コンソールにて警告します。