-
Notifications
You must be signed in to change notification settings - Fork 319
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: support customize request method
- Loading branch information
1 parent
673d0e7
commit 5bc70be
Showing
3 changed files
with
137 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
import React, { useCallback, useState } from 'react'; | ||
import { Radio, Upload } from 'tdesign-react'; | ||
|
||
const RequestMethod = () => { | ||
const [files, setFiles] = useState([]); | ||
const [uploadMethod, setUploadMethod] = useState('requestSuccessMethod'); | ||
|
||
// customize upload `file`, if success, return url | ||
const requestSuccessMethod = useCallback( | ||
(file) => | ||
new Promise((resolve) => { | ||
// set file.percent for mock upload progress | ||
// eslint-disable-next-line no-param-reassign | ||
file.percent = 0; | ||
let timer = setTimeout(() => { | ||
// resolve 参数为关键代码 | ||
resolve({ | ||
status: 'success', | ||
response: { url: 'https://tdesign.gtimg.com/site/avatar.jpg' }, | ||
}); | ||
// eslint-disable-next-line no-param-reassign | ||
file.percent = 100; | ||
clearTimeout(timer); | ||
timer = null; | ||
}, 520); | ||
}), | ||
[], | ||
); | ||
|
||
// customize upload `file`, if fail, return error message | ||
const requestFailMethod = useCallback( | ||
() => | ||
new Promise((resolve) => { | ||
// resolve 参数为关键代码 | ||
resolve({ | ||
status: 'fail', | ||
error: 'for some reason, upload fail', | ||
}); | ||
}), | ||
[], | ||
); | ||
|
||
const onChangeUploadMethod = useCallback((value) => { | ||
setUploadMethod(value); | ||
setFiles([]); | ||
}, []); | ||
|
||
return ( | ||
<div className="tdesign-demo-block-column-large"> | ||
<div> | ||
<Radio.Group variant="default-filled" value={uploadMethod} onChange={onChangeUploadMethod}> | ||
<Radio.Button value="requestSuccessMethod">上传成功示例</Radio.Button> | ||
<Radio.Button value="requestFailMethod">上传失败示例</Radio.Button> | ||
</Radio.Group> | ||
</div> | ||
|
||
<Upload | ||
files={files} | ||
onChange={setFiles} | ||
requestMethod={uploadMethod === 'requestSuccessMethod' ? requestSuccessMethod : requestFailMethod} | ||
tips="自定义上传方法需要返回成功或失败信息" | ||
/> | ||
</div> | ||
); | ||
}; | ||
|
||
export default RequestMethod; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters