异步操作实际上只是您在店内分配的功能。
const uploadStarted =() => ({ type: 'UPLOAD_STARTED' })
const uploadSuccessed =() => ({ type: 'UPLOAD_SUCCESSED' })
const uploadFailed =() => ({ type: 'UPLOAD_FAILED' })
const upload = (data) => {
dispatch(uploadStarted())
axios.post('upload/url', {data})
.then(dispatch(uploadSuccess()))
.catch(dispatch(uploadFailed())
}
mapDispatchToProps({ upload })
mapStateToProps(state => ({ uploading: state.uploading })
const MyComponent = ({ upload, uploadidng }) => {
return (
<div>
{ uploading ? 'Uploading...', 'Nothing is going on' }
<button onClick=(() => upload({ test: 'test'})) />
</div>
)
}
export default connect(mapStateToProps, mapDispatchToProps)(MyComponent)
这里upload
函数返回取dispatch
功能未参数的新功能。此功能将在您分派时执行。您可以在异步操作中使用给定的dispath
函数来分派实际的简单操作或甚至其他函数。
这种类型的异步操作称为thunk。