van-uploader自定义加载
时间: 2025-07-04 17:11:47 浏览: 7
### van-uploader 组件自定义加载效果
为了在 `van-uploader` 中实现自定义加载效果,可以利用其提供的事件和插槽功能来定制化显示内容。具体来说,在文件上传过程中可以通过监听特定事件并结合状态管理来控制加载动画或其他视觉反馈。
#### 使用插槽与事件处理
通过使用 `custom-class` 或者 `slot` 属性来自定义样式或结构,并配合 JavaScript 控制逻辑,可以在上传期间展示个性化的加载指示器。下面是一个基于给定资料的例子[^1]:
```html
<template>
<!-- WXML -->
<view class="uploader-container">
<van-uploader
:after-read="onAfterRead"
v-model="fileList"
@oversize="handleOversize"
use-slot
>
<button type="primary">选择文件</button>
<template #preview-cover="{ file }">
<div v-if="loading[file.uid]" class="loading-mask">
<van-loading size="20px"/>
</div>
</template>
</van-uploader>
</view>
</template>
<script>
export default {
data() {
return {
fileList: [],
loading: {}
};
},
methods: {
onAfterRead(file) {
this.loading[file.file.uid] = true;
setTimeout(() => { // 模拟异步操作
delete this.loading[file.file.uid];
if (typeof file === 'object') {
this.fileList.push({ ...file, status: 'done' });
}
}, 3000);
},
handleOversize(file){
console.log('文件超出大小限制', file);
}
}
};
</script>
<style scoped lang="less">
.uploader-container .loading-mask{
position:absolute;
top:0;left:0;right:0;bottom:0;
background-color:#fff8;
display:flex;
align-items:center;
justify-content:center;
}
</style>
```
此代码片段展示了如何创建一个带有自定义加载图标的 `van-uploader` 组件实例。当用户选择了要上传的文件后,会触发 `onAfterRead` 方法启动模拟的上传过程,并在此期间向对应的文件项添加一个正在加载的状态标记。一旦完成(这里用定时器代替实际网络请求),则移除该标志以恢复正常视图。
阅读全文
相关推荐











