@aligov/gov-spread
v1.1.0
Published
Download with async generation
Downloads
3
Readme
Download
npm publish 失败,暂时没找到原因,先使用 @alife 发布到 tnpm
后续发布到 npm 需要修改为 @aligov/download,包括 demo 以及 package.json
@aligov/gov-spread
下载按钮,支持两种形式:
- 传入 url,点击后直接下载(新标签页打开)
- 先创建文件生成任务,然后轮询任务直到生成下载链接、失败或超过轮询次数限制。
API
直接展示的是一个基于 @alifd/next
中 Button
的按钮,除了后面罗列的参数外,其它额外参数将作为 Button 的属性。
直接下载
直接下载是指点击后就新标签页打开给定的地址,当 props.url
存在时就进入此模式。
| 参数名 | 说明 | 必填 | 类型 | 默认值 | 备注 | | ------ | ---- | ---- | ---- | ------ | ---- | | url | 文件访问地址 | Y | string | | 直接下载模式下必填 |
异步生成
当无 props.url
时,进入先创建文件生成任务,然后轮询获取文件下载链接的模式。
| 参数名 | 说明 | 必填 | 类型 | 默认值 | 备注 |
| ------ | ---- | ---- | ---- | ------ | ---- |
| createService | 创建文件生成任务 | Y | () => Promise<ITaskId>
| | 返回任务 id |
| pollingService | 轮询任务 | Y | (taskId: ITaskId) => Promise<IPollingResult>
| | |
| maxPollingTimes | 最大轮询次数 | N | number | 60 | |
| pollingInterval | 轮询时间间隔,单位毫秒 | N | number | 1000 | |
| autoDownload | 轮询成功后是否自动下载 | N | boolean | false | |
| dialogTitle | dialog title | N | ReactNode | | |
| onOk | 文件地址生成后回调 | N | (url: string) => void
| | |
其中,
type ITaskId = number | string
interface IPollingResult {
status: 'init' | 'running' | 'done' | 'failed';
payload?: string;
}