Можно ли передать socket как пропс React

Я использую библиотеку socket.io-client и в React у меня есть компонент в котором я объявил импорт и в нем пользуюсь сокетами. Но у меня есть еще компонент в котором я бы хотел управлять состоянием компонента (из соображение производительности и уменьшения ререндеров).

//в главном компоненте есть socket: 
const socket = io();
//и в этом компоненте я успешно им пользуюсь, можно ли передать его как пропс компоненту ниже и пользоваться им
const [code, setCode] = React.useState('const greetings = "Hello World!"');

// например я бы хотел отправлять данные code на сокет сервер и транслировать их другим юзерам

// Ниже то, что я хотел бы делать в компоненте

socket.on("sendText", code); // Посылает данные на сервер
socket.emit("getText", (text) => setCode(text)); // возвращает данные 

Можно ли прокинуть импортированный socket как пропс в компонент? В моем случае это не работает, обработчики просто не срабатывают.

Я пробовал прокидывать функцию в данный компонент без socket

sendText(code) // код из компонента ниже по иерархии

 const sendText = (text) => {
    socket.emit('sendText', { roomId, text }); // код из компонента с socket
 };

// и это успешно работает данные отправляются на сервер

Но как мне вытащить пришедшие данные и прокинуть их вниз в компонент где у меня находиться state code?

const getText = () => {
   socket.on("getText", (text) => {
     // Что мне тут написать чтобы я мог передать это значение компоненту вниз
   })
}

Как быть в этой ситуации? Импортировать socket во второй компонент?


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