В качестве примера, скажем, мы создаем приложение для биржевой торговли. У нас есть ряд <Stock>
компонентов, каждый из которых имеет некоторую опору, например symbol="AAPL"
.
. У нас также есть центральный магазин Redux с ценами на акции по символам, который периодически обновляется и «выталкивает» любые обновления. к дочерним компонентам. У нас есть StockPriceService
, который выполняет выборку, и имеет метод getPrice(symbol)
, который передается через API-интерфейс контекста следующим образом:
// our App.js render
render() {
return (
<StockPriceService.Provider value={stockPriceService}>
// Rest of view hierarchy
</StockPriceService.Provider>
);
}
То, что мы хотим - это несколько функций:
- Каждый дочерний компонент
<Stock>
может отображаться немедленно, с '--'
или подобным, пока не будет доступно значение, полученное из сети - Доступность сети восстановленные значения для передачи через действие Redux, которое сохраняет их в магазине (для будущего просмотра в автономном режиме, например, приложение погоды, которое показывает
Last Updated: 14 minutes ago
) - Получение цен на акции должно указывать на
StockPriceService
до getPrice()
, что если значение не было получено в >= 15 minutes
, должен быть выполнен опрос - Если нет значения для запрошенного символа, присутствующего в нашем хранилище Redux, Также следует попытаться провести тот же опрос
Таким образом, метод визуализации <Stock>
может выглядеть следующим образом:
return (
<Text>{this.props.symbol}: ${this.context.getPrice(this.props.symbol)}</Text>
);
Моя проблема / вопрос: This "работает ", в этом getPrice()
действительно может проверить местный Redux store, чтобы увидеть, что доступно, и вернуть значение, если оно есть. Но когда он не и запускает фоновую загрузку, как компоненту <Stock>
легко сигнализировать о необходимости повторного рендеринга?
Создание части price
состояние для компонента <Stock>
означает, что компонент теперь может автоматически повторно отображаться, но как должно происходить обновление состояния после завершения загрузки?
Если <Stock>
Компонент должен был получить свою цену акций непосредственно из магазина Redux, повторный рендеринг работал бы должным образом после действия Redux, обновляющего магазин Redux, но, обойдя StockPriceSymbol
, у него не было бы возможности проверить, новый ли опрос требуется или обрабатывать соответствующие бизнес-логики c для извлечения / сохранения новых / несуществующих значений.