teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

内容修正

2019/01/14 10:49

投稿

NozomuIkuta
NozomuIkuta

スコア1260

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ---
4
4
 
5
- **Vue.jsのサンプル**
5
+ **公式のサンプル**
6
6
 
7
7
  アプリの起動(`new Vue({...})`)から以下の動作になります。
8
8
 
@@ -38,6 +38,11 @@
38
38
  ---
39
39
 
40
40
  両者の違いは「コンポーネントをマウントした時、`localStorage`の値を`name`に代入し、フォームに表示しているか」です。
41
+
42
+ 公式のサンプルでは、`mounted()`が呼ばれた際には(5)の挙動が1回目は無駄な動作になります。
43
+ もとをたどれば、`localStorage.name`を`this.name`に代入して、その値を再度`localStorage.name`に代入しているからです。
44
+ ただし、2回目以降は「フォームの値に基づいて`localStorage.name`を更新する」意味のある記述になります。
45
+
41
46
  ma7ma7pipipiさんのコードでは、例えば2回目以降のアクセスで`localStorage`の値があったとしてもフォームに表示されないので、保存しておく意味が意味が(少なくとも今回の場面では)ないと思います。
42
47
 
43
48
  また、ma7ma7pipipiさんのコードでは、(2)でコンポーネントのデータを更新しているにもかかわらず、(4)で再度代入していますが、これは無駄な動作です。`watch`で設定する関数は「データが更新された時に呼ばれる」関数であるからです。