#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 — этой статьи должно быть достаточно, чтобы указать вам правильное направление.