Можно ли передать 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 во второй компонент?