質問編集履歴
1
試したことの追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -293,4 +293,39 @@
|
|
293
293
|
}
|
294
294
|
}
|
295
295
|
|
296
|
-
```
|
296
|
+
```
|
297
|
+
# 追記
|
298
|
+
下記の様に副作用(useEffect)のスキップ(isChangedで制御)を外したところ正常に動作いたしました。
|
299
|
+
しかし、今度はリクエストが永遠に送られつづけ、```429 Too many requests```で死にます。
|
300
|
+
このことより、pusherとのデータのやりとりをする為のコードは間違っていないことがわかりました。
|
301
|
+
恐らく、useEffectが何度も走るということは、何度もレンダリング?されているからだと思うのですが、その原因がわかりません…。
|
302
|
+
|
303
|
+
```
|
304
|
+
useEffect(() => {
|
305
|
+
|
306
|
+
// Pusher用のキーを設定
|
307
|
+
const pusher = new Pusher(process.env.MIX_PUSHER_APP_KEY, {
|
308
|
+
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
|
309
|
+
encrypted: true
|
310
|
+
})
|
311
|
+
// チャンネルの購読
|
312
|
+
const channel = pusher.subscribe('chat')
|
313
|
+
channel.bind('ChatMessageReceived', data => {
|
314
|
+
console.log(data)
|
315
|
+
setMessages([...messages, data])
|
316
|
+
console.log(messages)
|
317
|
+
})
|
318
|
+
|
319
|
+
const token = JSON.parse(User.get('token')).token
|
320
|
+
const boardID = Board.getBoardID()
|
321
|
+
|
322
|
+
if (token) {
|
323
|
+
Chat.get(token, boardID)
|
324
|
+
.then(res => {
|
325
|
+
setMessages(res.data.messages)
|
326
|
+
})
|
327
|
+
.catch(e => {
|
328
|
+
console.log(e)
|
329
|
+
})
|
330
|
+
}
|
331
|
+
})
|