Цель состоит в том, чтобы инициировать соединение с сокетом в App.js при запуске приложения, а затем сделать этот точный экземпляр сокета доступным для других компонентов, которые загружены с маршрутизатором.Онлайн-исследование предлагает передать сокет вложенному компоненту следующим образом:
const socket = io();
...
render() {
return(<div className="App"><NestedComponent socket={socket} /></div>)
}
Это не работает, если сокет передается через маршрутизатор
<Route path='/somepath' socket={socket} component={SomeComponent}/>
Если я пытаюсь использовать сокет в SomeComponent (например:this.props.socket.emit('hi', {})
), это нарушает работу приложения, поскольку сокет оказывается неопределенным в SomeComponent.
Мне не удалось найти рабочее решение для передачи одного и того же экземпляра сокета с помощью маршрутизатора или использования Redux длясделайте сокет частью состояния приложения и предоставьте его компонентам более низкого уровня.
Любой вклад в это очень важен.