質問編集履歴
1
試したことの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -589,3 +589,73 @@
|
|
589
589
|
|
590
590
|
|
591
591
|
```
|
592
|
+
|
593
|
+
# 追記
|
594
|
+
|
595
|
+
下記の様に副作用(useEffect)のスキップ(isChangedで制御)を外したところ正常に動作いたしました。
|
596
|
+
|
597
|
+
しかし、今度はリクエストが永遠に送られつづけ、```429 Too many requests```で死にます。
|
598
|
+
|
599
|
+
このことより、pusherとのデータのやりとりをする為のコードは間違っていないことがわかりました。
|
600
|
+
|
601
|
+
恐らく、useEffectが何度も走るということは、何度もレンダリング?されているからだと思うのですが、その原因がわかりません…。
|
602
|
+
|
603
|
+
|
604
|
+
|
605
|
+
```
|
606
|
+
|
607
|
+
useEffect(() => {
|
608
|
+
|
609
|
+
|
610
|
+
|
611
|
+
// Pusher用のキーを設定
|
612
|
+
|
613
|
+
const pusher = new Pusher(process.env.MIX_PUSHER_APP_KEY, {
|
614
|
+
|
615
|
+
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
|
616
|
+
|
617
|
+
encrypted: true
|
618
|
+
|
619
|
+
})
|
620
|
+
|
621
|
+
// チャンネルの購読
|
622
|
+
|
623
|
+
const channel = pusher.subscribe('chat')
|
624
|
+
|
625
|
+
channel.bind('ChatMessageReceived', data => {
|
626
|
+
|
627
|
+
console.log(data)
|
628
|
+
|
629
|
+
setMessages([...messages, data])
|
630
|
+
|
631
|
+
console.log(messages)
|
632
|
+
|
633
|
+
})
|
634
|
+
|
635
|
+
|
636
|
+
|
637
|
+
const token = JSON.parse(User.get('token')).token
|
638
|
+
|
639
|
+
const boardID = Board.getBoardID()
|
640
|
+
|
641
|
+
|
642
|
+
|
643
|
+
if (token) {
|
644
|
+
|
645
|
+
Chat.get(token, boardID)
|
646
|
+
|
647
|
+
.then(res => {
|
648
|
+
|
649
|
+
setMessages(res.data.messages)
|
650
|
+
|
651
|
+
})
|
652
|
+
|
653
|
+
.catch(e => {
|
654
|
+
|
655
|
+
console.log(e)
|
656
|
+
|
657
|
+
})
|
658
|
+
|
659
|
+
}
|
660
|
+
|
661
|
+
})
|