naive-ui-upload文档
介绍
naive-ui-upload
是基于naive-ui
的n-upload
封装的一个文件上传组件。支持图片裁剪功能。
安装
bash
pnpm add naive-ui-upload
也可以使用npm
、yarn
等安装。
使用
局部导入
vue
<template>
<NConfigProvider :locale="zhCN" :date-locale="dateZhCN">
<NMessageProvider>
<NaiveUiUpload
v-model:value="fileList"
list-type="image-card"
:requestFunc="handleUpload"
></NaiveUiUpload>
</NMessageProvider>
</NConfigProvider>
</template>
<script setup lang="ts">
import { NConfigProvider, zhCN, dateZhCN, NMessageProvider } from 'naive-ui'
import { NaiveUiUpload, type FileInfo } from 'naive-ui-upload'
import { ref } from 'vue'
const fileList = ref<FileInfo[]>([])
function handleUpload() {
return new Promise((resolve) => {
setTimeout(() => {
resolve('https://picsum.photos/200/300')
}, 1000)
})
}
</script>
<style scoped></style>
FileInfo
类型是n-upload
的UploadFileInfo
的简化:
ts
interface FileInfo {
name: string
url: string
status?: string
id?: string
}
全局导入
ts
import { createApp } from 'vue'
import NaiveUiUpload from 'naive-ui-upload'
const app = createApp(App)
app.use(NaiveUiUpload, {
requestFunc() {
return new Promise((resolve) => {
setTimeout(() => {
resolve('https://picsum.photos/200/300')
}, 1000)
})
}
})
props
字段 | 类型 | 描述 | 必传 | 默认值 |
---|---|---|---|---|
requestFunc | Function,见下方说明 | 上传文件的方法 | 否 | - |
v-model:value | FileInfo[] | 文件列表,需要双向绑定 | 是 | |
size | number | 单个文件上传的限制大小(单位:M) | 否 | |
cropper | Objec,具体参数见vue-cropper | 是否需要裁剪(设置该值时确保上传的是图片格式的文件) | 否 | |
showInfo | boolean | 是否显示提示信息 | 否 | 是 |
uploadText | string | 默认插槽按钮文字 | 否 | 上传文件 |
此外,还可以传入n-upload的大部分props
。
requestFunc
字段定义类型如下:
ts
type RequestFun = (file: File, onProgerss?: (e: { percent: number }) => void) => Promise<string>
可以在全局注册
传入requestFunc
,也可在naive-ui-upload
的props
传入。props
优先级最高。
ts
app.use(NaiveUiUpload, {
requestFunc: xxx
})
也可以通过provide
注入:
ts
import { provideKey } from 'naive-ui-upload'
app.provide(provideKey, function)
提示
如果没有找到requestFunc
,naive-ui-upload
会报错