我有一个包含汇率的页面,并且页面上有一个具有不同货币的选择控件。
我有一个动作来加载不在状态的交换对。 因此,每次我更改选择框时,我都会调用一个动作来从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
答案 0 :(得分:0)
mapStateToProps
可以再加上一个参数,通常称为ownProps
。第二个参数的存在将改变connect
的行为,这样它不仅将在Redux状态更改中被调用,在属性更改时也将被调用: