https://codesandbox.io/s/rlpv50q8qo
getSportsPlayerHistory = values => {
this.props.fetchHistorySportsDatafromURL();
};
toggleDrawer = (side, open) => () => {
if (open === true) {
this.getSportsPlayerHistory();
}
this.setState({
[side]: open
});
};
const mapDispatchToProps = dispatch => {
return {
onDeleteAllSPORTS: () => {
// console.log("called");
dispatch(deleteAllPosts());
},
addFavoriteSPORTSs: data => {
dispatch(addFavoriteSPORTSs(data));
},
fetchHistorySportsDatafromURL: () => {
dispatch(fetchHistorySportsDatafromURL());
}
};
};
答案 0 :(得分:1)
动作需要返回普通对象,您的fetchHistorySportsDatafromURL
动作返回一个函数。如果您使用历史记录减少器函数async
,则可以使用异步函数来进行API调用那里并将结果返回状态。
您还可以异步地在组件的回调处理程序中发出API请求,并将结果传递给分派的操作。
API call in component then dispatched in action
如果您仍然希望将API逻辑与组件分开(这是一件好事),则redux-thunk是创建异步操作创建者的一种方式,这与原始代码的模式非常相似。
API call in action using redux-thunk
不太确定要如何处理新状态,但这应该可以让您在mapStateToProps
函数中处理该状态。