React.js и Socket.io

такая проблема - разрабатываю сайт на react.js с socket.io. Я открываю соединение через socket.io с сервером и беру некоторые данные по socket.on('getAllUsers'), когда хочу сохранить их в переменную через useState(), то происходит бесконечное создание коннектов к сокету, скорее всего из-за того, что React компонент каждый раз перерендривается, а т.к. получение данных через сокет и занесение их в переменную происходит без всяких условий, то начинаются бесконечные коннекты к сокету.

КЛИЕНТ

import React, { useState } from "react";
import io from 'socket.io-client'
function App () {
  const [clientUsers, setClientUsers] = useState([])
  const socket = io()

  socket.on('getAllUsers', users=>{
    setClientUsers(users)
    })
}

СЕРВЕР

var users = [];

io.on('connection', socket =>{

    console.log('Client connected.');

     users.push({
      trueID: null,
      userID: socket.id,
      username: socket.username,
    });

    io.emit('getAllUsers', {users:users})

}

Можно ли запретить перерендер переменное socket или есть еще какие-нибудь варианты? Мне необходимо, чтобы данные в переменной clientUsers динамически отображались на сайте, поэтому просто класть данные в обычную переменную не подходит


Ответы (0 шт):