У меня есть страница с курсами валют, и на странице есть выборочный элемент управления с разными валютами.
У меня есть действие для загрузки курса для пары обмена, которая еще не в состоянии.
Поэтому каждый раз, когда я меняю поле выбора, я вызываю действие для загрузки новой пары тарифов из API.
Моя картаStateToProps:
mapStateToProps(state){
return {
rateState: selectExchangeRates(state, this.currencyFrom, this.currencyTo)
};
}
Мое действие выглядит так (я использую angularJS, но это не имеет значения):
exchangeRates(from, to) {
return (dispatch, getState) => {
const state = selectExchangeRates(getState(), buy, pay);
if(state.isLoading || state.isRequested) return this.$q.resolve();
...
/* here is async request for exch pair, which is dispatching request state and after - result or error */
};
}
Проблема в том, что когда в форме я переключаюсь на существующую скорость, не отправляется никаких действий. Итак, вопрос - как я могу обновить свой mapStateToProps
без изменения состояния?
У меня нет редуктора для формы, потому что мне не нужно сохранять его состояние. Параметры валюты от и до являются локальными.
Можно ли практиковать что-то вроде:
onPairChange(from, to){
this.props = Object.assign(this.props, this.mapStateToProps(this.$ngRedux.getState()));
}
Или, может быть, есть лучшее решение, существует? Thx