У меня проблема с thunk и асинхронной диспетчеризацией. Итак, вот мой код:
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, переданные в отправку, верны, но затем что-то идет не так, и редукторы не вызываются с этим действием. Что может быть причиной этой проблемы?
Dashboard
с помощью декоратора@connect
? Если вам это нужно, чтобы иметь возможность вызывать функцию отправки. См.: stackoverflow.com/questions/36553814/ - person Tom Doodler   schedule 04.07.2017state.provider
нулевым или неопределенным до того, как сработает действиеFETCH_PROVIDER
? - person MinusFour   schedule 04.07.2017