не, я понимаю, поэтому и говорю, что как красиво можно сделать чуть позже, когда хотя бы сокеты не будут вызывать вопросы)
ссылка папуга показывает то, как можно реализовать сокеты по большей части вне реакта, в таком случае ui получается гораздо более легковесным, потому что больше не знает про детали работы с сокетами
если совместить его гист с примером выше, то получится как-то так:
useEffect(() => {
fetch({
method: 'binanceApp',
params: {
extraExit: true,
extraPrice: currentPrice,
extraTaker: takerComission
}
})
}, [currentPrice, takerComission])
в итоге компонент знает лишь про то, что существует функция fetch, а что она делает уже не так важно
но в примере есть опциональное усложнение — подразумевается, что нужно ждать ответа через сокет, поэтому то и используется эффект. если ожидание ответного сообщения не требуется, то всё это может выглядеть как-нибудь так:
const fetch = createEvent()
fetch.watch(({method, params}) => {
socket.emit(method, params)
})