Redux: вызвать mapStateToProps для локальных изменений - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть страница с курсами валют, и на странице есть выборочный элемент управления с разными валютами.

У меня есть действие для загрузки курса для пары обмена, которая еще не в состоянии. Поэтому каждый раз, когда я меняю поле выбора, я вызываю действие для загрузки новой пары тарифов из 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

1 Ответ

0 голосов
/ 19 февраля 2019

mapStateToProps может принимать еще один аргумент, часто называемый ownProps. Наличие этого второго аргумента изменит поведение connect так, что оно будет вызываться не только при изменении состояния Redux, но и при изменении реквизита:

https://react -redux.js.org / api / connect # ownprops

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...