2016-07-29 3 views
1

Я работаю над React.js и socket.io. Мое приложение состоит из нескольких контейнеров. Каждый контейнер имеет компоненты.Где инициализировать объект Socket в контейнерах для реактивов?

Мой контейнер и компонент иерархии

  • Dashboard
  • Чат
    • ChatListItem
    • CustomerChatView

Так вот Dashboard и поболтать два отдельных контейнера, определенные в отдельных файлах js. Я хочу обмениваться объектами websocket между сообщением Dashboard и Chat, так что панель мониторинга сможет отображать предупреждающее сообщение пользователю, когда в чат-контейнере появляется новое сообщение чата.

Мой вопрос - это самое подходящее место для инициализации websocket, чтобы один и тот же объект сокета можно было использовать в обоих контейнерах?

Я использую Socket.io библиотеку JavaScript

ответ

1

я бы, вероятно, создать корневой приложение контейнер, который может направить действие на componentWillMount для инициализации сокета и сохранить результат в магазине. Затем вы можете передать его в любой другой контейнер и использовать его там, где это необходимо.

+0

С другой стороны, я бы, вероятно, все еще инициализировал сокет в компоненте componentWillMount, но я бы сохранил ссылку в отдельном выделенном модуле, который, возможно, только показывал API для работы с ним. Предполагается, что состояние вашего хранилища будет сериализовано и сохранение сокета в нем, скорее всего, сделает его не так. – John

Смежные вопросы