componentWillRecieveProps не вызывает рендеринга - PullRequest
0 голосов
/ 04 апреля 2019

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

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

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

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

1 Ответ

2 голосов
/ 04 апреля 2019

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

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

...