componentWillRecieveProps не вызывает рендеринга

#reactjs #render

#reactjs #рендеринг

Вопрос:

Я создал приложение для чата, которое использует redux и MongoDB для хранения чата, когда я и мой друг заходим на веб-сайт и пишем сообщение, которое приходит от redux к этой функции:

  componentWillReceiveProps(nextProps) {
    if (nextProps.chat.chat) {
      this.setState({ chat: nextProps.chat.chat });
    }
  }
  

Если я напишу сообщение со своей стороны, я получу повторный рендеринг из-за setState, и я могу видеть манипуляции с DOM, но мой друг должен обновить страницу, чтобы увидеть, что я написал,
как я могу сделать так, чтобы страница отображалась на его странице так же хорошо?

Чтобы прояснить мой вопрос, как я могу проверить, обновлена ли база данных, и вызвать повторный рендеринг?

Ответ №1:

Для выполнения этой работы вам нужно будет использовать что-то вроде подписок или сокетов. Вы можете думать о сокетах как об открытом соединении между вами / вашим другом (клиентом) и сервером. При отправке сообщения ваша библиотека сокетов выдаст событие, сообщающее всем клиентам соединения, что сообщение было отправлено, и, вероятно, отправит новое сообщение в качестве полезной нагрузки.

https://itnext.io/building-a-node-js-websocket-chat-app-with-socket-io-and-react-473a0686d1e1 — этой статьи должно быть достаточно, чтобы указать вам правильное направление.