質問編集履歴

1

試したことの追加

2020/02/12 06:40

投稿

退会済みユーザー
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
+ })