Redux:调用mapStateToProps进行本地更改

时间:2018-04-26 08:08:52

标签: angularjs redux

我有一个包含汇率的页面,并且页面上有一个具有不同货币的选择控件。

我有一个动作来加载不在状态的交换对。 因此,每次我更改选择框时,我都会调用一个动作来从API加载新的速率对。

我的mapStateToProps:

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状态更改?

我没有表单的reducer,因为我不需要将它存储状态。来自和来自的参数货币是本地的。

可以做一些类似的事情:

onPairChange(from, to){
    this.props = Object.assign(this.props, this.mapStateToProps(this.$ngRedux.getState()));
}

或许有更好的解决方案确实存在? THX

1 个答案:

答案 0 :(得分:0)

mapStateToProps可以再加上一个参数,通常称为ownProps。第二个参数的存在将改变connect的行为,这样它不仅将在Redux状态更改中被调用,在属性更改时也将被调用:

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