[英]redux-thunk dispatch does not work
我在thunk和async分派方面有问题。 所以这是我的代码:
function fetchProvider() {
return (dispatch) => {
graphqlService(fetchProviderQuery)
.then((result) => {
dispatch({
type: FETCH_PROVIDER,
data: result.data.data.CurrentProvider,
});
});
};
}
class Dashboard extends React.Component {
componentDidMount() {
this.props.fetchProvider();
}
render() {
const { provider } = this.props;
return (
<div>
<ul>
<li>id: {provider.id}</li>
<li>name: {provider.name}</li>
<li>description: {provider.description}</li>
</ul>
</div>
);
}
}
const mapStateToProps = (state) => ({
provider: state.provider,
});
const mapDispatchToProps = (dispatch) => ({
fetchProvider: () => dispatch(fetchProvider()),
});
export default connect(mapStateToProps, mapDispatchToProps)(Dashboard);
我不知道为什么,但是在fetchProvider动作创建者内部进行分派不起作用。 graphqlService运作良好,并且在分派FETCH_PROVIDER操作时,传递给分派的操作数据是正确的,但是出了点问题,并且此操作未调用reducers。 有什么可能导致此问题?
终于我找到了问题。 这是由于react-router-redux中间件的初始化不正确引起的。 我将中间件构造函数传递给applyMiddleware,而不是构造的中间件。
您的重thunk
也必须兑现承诺,否则将无法按预期工作。 只需稍微修改您的fetchProvider
函数
function fetchProvider() {
return (dispatch) => {
return graphqlService(fetchProviderQuery)
.then((result) => {
dispatch({
type: FETCH_PROVIDER,
data: result.data.data.CurrentProvider,
});
});
};
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.