2017-08-02 67 views

回答

0

异步操作实际上只是您在店内分配的功能。

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。