Я бы посоветовал вам, если это возможно, сначала создать базовую логику, не используя Redux, потребуется время, чтобы парадигмы освоились - как и зачем их использовать и т. Д. Во-вторых, componentWillMount
устарело (будет) устаревшими это никогда не было местом для размещения запросов данных, кроме componentDidMount
(как указано в документах ).
Основной способ сделать что-то в React - это вызвать запрос в componentDidMount
и , а затем перевести ответ в состояние компонента через setState
, что вызовет повторный рендеринг с новыми данными.,С Redux вы делаете то же самое, вы отправляете действие в то же место, действие вызывает запрос, а затем ответ переводится в глобальное состояниечерез редуктор .Однако, чтобы компонент обновлялся при изменении состояния, он должен быть подписан на эту часть состояния.Самый простой способ сделать это - обернуть компонент с помощью функции connect
высокого порядка из response-redux и передать эту часть состояния как опору компоненту через объект mapStateToProps
.
Если все это звучит как много по сравнению с наличием только локального состояния компонента, это так, и поэтому я советую сначала попытаться реализовать логику без Redux.Эти дополнительные шаги имеют свои преимущества в больших проектах, где выгодно иметь глобальное состояние, в отличие от передачи обработчиков повсеместно, и большой контейнерный компонент для этого состояния, но к нему прилагается множество шаблонов, к которым нужно привыкнуть.
Теперь вторая часть вашей проблемы, если я не ошибаюсь, обновляет состояние, когда какой-то другой пользователь обновляет данные где-то еще?Это типичная проблема в Интернете, и вы не сможете обойти ее с помощью React или Redux, потому что это не имеет к ним никакого отношения, а требует постоянной проверки на наличие изменений.Или, другими словами, вам нужен способ, чтобы сервер уведомил ваше приложение React об изменении данных.
Существует несколько способов сделать это:
Быстрое и грязное решение, при котором вы запускаете таймер setInterval в своем компоненте для постоянной отправки запросов и обновления состояния каждые X секунд (только не забудьте clearInterval до того, как компонент размонтируется или будет продолжать отправлять запрос неопределенно)
Использовать отправленные на сервер события для получения уведомлений при изменении данных
Используйте WebSockets или socket.io для той же функциональности, что и события на стороне сервера, или вы также можете переместить весь обмен данными для прохождения одного изэти службы, а не стандартные HTTP-запросы