【发布时间】:2019-12-19 07:58:42
【问题描述】:
使用React 和antd
我的组件中有以下代码:
<Upload
action={HttpService.getBaseUrl(`post_import_csv`, HttpService.AuditcoreAPIBasePath)}
headers={{"Authorization": `Bearer ${AuthHelper.getAuthKey()}`}}
showUploadList={false}
multiple={false}
beforeUpload={(file: RcFile): PromiseLike<any> => {
this.setCSV(file);
return new Promise((resolve) => {
this.state.requestUpload.pipe(take(1)).subscribe(() => {
resolve(file);
console.log('resolved')
});
})
}}></Upload>
基本上我希望我的beforeUpload 在上传文件之前等待用户单击按钮。我这样做是通过返回一个 Promise 并等待一个在按钮单击时触发的 rxjs Suject 来解决这个 Promise。跟doc差不多
这里是按钮代码:
<Button
onClick={(e): void => {
this.state.requestUpload.next(true);
}}
>
Upload
</Button>
效果很好,但文件从未上传,我确实看到了我的日志resolved,但我的控制台中没有网络调用的痕迹。
【问题讨论】:
-
我猜你必须将
<Button>包裹在<Upload>内,请参阅:github.com/react-component/upload/blob/master/examples/… -
里面的按钮有不同的用途,它是用来打开资源管理器的,反正我试过了,没有任何改变(我不明白为什么这会改变一些东西)