質問編集履歴
2
文章の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -308,7 +308,7 @@
|
|
308
308
|
|
309
309
|
[https://jp.vuejs.org/v2/cookbook/client-side-storage.html](https://jp.vuejs.org/v2/cookbook/client-side-storage.html) を参考に
|
310
310
|
|
311
|
-
localstrage
|
311
|
+
localstrageでデータを保持できよう設定を行ってみましたが、検証ツールでデータが確認できませんでした。
|
312
312
|
|
313
313
|
|
314
314
|
|
1
質問内容の変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
vue.js
|
1
|
+
vue.js リロード後の初期化を防ぎたいです
|
test
CHANGED
@@ -2,21 +2,19 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
|
5
|
+
vueでフォロー機能を実装しています。
|
6
|
+
|
7
|
+
リロードしてもデータが初期化されないようにしたいです。
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
### 発生している問題
|
12
|
+
|
13
|
+
|
6
14
|
|
7
15
|
フォローボタンをクリックすると問題なく動作しますが、
|
8
16
|
|
9
|
-
フォロー、フォロワーのカウントはまだ非同期通信ではないため、一度リロードしないと反映されません。
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
### 発生している問題
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
17
|
+
一度リロードするとフォロー、フォロワーのカウントが0になり初期化されてしまいます。
|
18
|
-
|
19
|
-
しかし、どうコードを書いていいかわからず悩んでいます。
|
20
18
|
|
21
19
|
|
22
20
|
|
@@ -32,13 +30,9 @@
|
|
32
30
|
|
33
31
|
<div>
|
34
32
|
|
35
|
-
<!-- 追記 -->
|
36
|
-
|
37
|
-
<
|
33
|
+
<p>{{ followingCount }} フォロー</p>
|
38
|
-
|
34
|
+
|
39
|
-
<p>{{ followersCount }} フォロワー</p>
|
35
|
+
<p>{{ followersCount }} フォロワー</p>
|
40
|
-
|
41
|
-
|
42
36
|
|
43
37
|
<div v-if="isRelationshiped" @click="deleteRelationship()" class="btn btn-bg follow-followed">
|
44
38
|
|
@@ -52,6 +46,10 @@
|
|
52
46
|
|
53
47
|
</div>
|
54
48
|
|
49
|
+
|
50
|
+
|
51
|
+
<pre>{{ $data }}</pre>
|
52
|
+
|
55
53
|
</div>
|
56
54
|
|
57
55
|
</template>
|
@@ -78,18 +76,40 @@
|
|
78
76
|
|
79
77
|
relationshipList: [],
|
80
78
|
|
81
|
-
|
82
|
-
|
83
|
-
|
79
|
+
followingCount: 0,
|
80
|
+
|
84
|
-
|
81
|
+
followersCount: 0,
|
82
|
+
|
85
|
-
//
|
83
|
+
// localstrageの設定
|
86
|
-
|
84
|
+
|
87
|
-
//
|
85
|
+
//countData: ''
|
88
86
|
|
89
87
|
}
|
90
88
|
|
91
89
|
},
|
92
90
|
|
91
|
+
// localstrageの設定
|
92
|
+
|
93
|
+
// mounted() {
|
94
|
+
|
95
|
+
// if (localStorage.countData) {
|
96
|
+
|
97
|
+
// this.countData = localStorage.countData;
|
98
|
+
|
99
|
+
// }
|
100
|
+
|
101
|
+
// },
|
102
|
+
|
103
|
+
// watch: {
|
104
|
+
|
105
|
+
// countData(newcountData) {
|
106
|
+
|
107
|
+
// localStorage.countData = newcountData;
|
108
|
+
|
109
|
+
// }
|
110
|
+
|
111
|
+
// },
|
112
|
+
|
93
113
|
computed: {
|
94
114
|
|
95
115
|
count() {
|
@@ -98,22 +118,6 @@
|
|
98
118
|
|
99
119
|
},
|
100
120
|
|
101
|
-
|
102
|
-
|
103
|
-
// 追記
|
104
|
-
|
105
|
-
// followingCount() {
|
106
|
-
|
107
|
-
// return this.following.length
|
108
|
-
|
109
|
-
// },
|
110
|
-
|
111
|
-
// followersCount() {
|
112
|
-
|
113
|
-
// return this.followers.length
|
114
|
-
|
115
|
-
// },
|
116
|
-
|
117
121
|
isRelationshiped() {
|
118
122
|
|
119
123
|
if (this.relationshipList.length === 0) { return false }
|
@@ -150,11 +154,7 @@
|
|
150
154
|
|
151
155
|
const res = await axios.post('/api/v1/relationships', { followed_id: this.followedId })
|
152
156
|
|
153
|
-
|
154
|
-
|
155
|
-
// 追記
|
156
|
-
|
157
|
-
|
157
|
+
this.followersCount += 1;
|
158
158
|
|
159
159
|
if (res.status !== 201) { process.exit() }
|
160
160
|
|
@@ -172,11 +172,7 @@
|
|
172
172
|
|
173
173
|
const res = await axios.delete(`/api/v1/relationships/${relationshipId}`)
|
174
174
|
|
175
|
-
|
176
|
-
|
177
|
-
// 追記
|
178
|
-
|
179
|
-
|
175
|
+
this.followersCount -= 1;
|
180
176
|
|
181
177
|
if (res.status !== 200) { process.exit() }
|
182
178
|
|
@@ -212,16 +208,26 @@
|
|
212
208
|
|
213
209
|
<%= javascript_pack_tag 'relationship' %>
|
214
210
|
|
211
|
+
<% if current_user.id === user.id %>
|
212
|
+
|
215
|
-
<%
|
213
|
+
<%= link_to "#{user.followings.count} フォロー", following_user_path(user), class: "link-color" %>
|
214
|
+
|
216
|
-
|
215
|
+
<span> | </span>
|
216
|
+
|
217
|
-
<%
|
217
|
+
<%= link_to "#{user.followers.count} フォロワー ", followers_user_path(user), class: "link-color" %>
|
218
|
+
|
219
|
+
<% end %>
|
218
220
|
|
219
221
|
<div id="relationship">
|
220
222
|
|
221
223
|
<% if current_user.id != user.id %>
|
222
224
|
|
225
|
+
<keep-alive>
|
226
|
+
|
223
227
|
<Relationship-button :follower-id="<%= current_user.id %>" :followed-id="<%= @user.id %>"></Relationship-button>
|
224
228
|
|
229
|
+
</keep-alive>
|
230
|
+
|
225
231
|
<% end %>
|
226
232
|
|
227
233
|
</div>
|
@@ -296,9 +302,21 @@
|
|
296
302
|
|
297
303
|
|
298
304
|
|
305
|
+
follows.html.erbのコンポーネントにkeep-aliveを使ってデータをキャッシュできるように設定。
|
306
|
+
|
307
|
+
|
308
|
+
|
309
|
+
[https://jp.vuejs.org/v2/cookbook/client-side-storage.html](https://jp.vuejs.org/v2/cookbook/client-side-storage.html) を参考に
|
310
|
+
|
311
|
+
localstrageの設定を行ってみましたが、検証ツールでデータが確認できませんでした。
|
312
|
+
|
313
|
+
|
314
|
+
|
315
|
+
調べたところ、localstrageやvuexを使いstoreでデータを保持するとのことですが、
|
316
|
+
|
299
|
-
|
317
|
+
大規模ではない場合localstrageを使ったほうが適切でしょうか。
|
300
|
-
|
301
|
-
|
318
|
+
|
319
|
+
|
302
320
|
|
303
321
|
|
304
322
|
|