質問編集履歴

2

文章の修正

2021/09/13 12:16

投稿

Taka2401
Taka2401

スコア8

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

質問内容の変更

2021/09/13 12:16

投稿

Taka2401
Taka2401

スコア8

test CHANGED
@@ -1 +1 @@
1
- vue.js フォロー機能実装
1
+ vue.js ロード後初期化を防ぎたいです
test CHANGED
@@ -2,21 +2,19 @@
2
2
 
3
3
 
4
4
 
5
- Railsアプリにあるフォロー機能をvueでaxiosを使い非同期通信で書き換えています。
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
- <!-- <p>{{ followingCount }} フォロー</p>
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
- // following: [],
83
+ // localstrageの設定
86
-
84
+
87
- // followers: [],
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
- // this.following.length += 1;
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
- // this.followers.length -= 1;
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
- <%#= link_to "#{user.followings.count} フォロー", following_user_path(user), class: "link-color" %><span> | </span>
213
+ <%= link_to "#{user.followings.count} フォロー", following_user_path(user), class: "link-color" %>
214
+
216
-
215
+ <span> | </span>
216
+
217
- <%#= link_to "#{user.followers.count} フォロワー ", followers_user_path(user), class: "link-color" %>
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