Upload组件上传后文件列表不更新怎么办?
我用的是Element Plus的Upload组件,手动上传成功后,界面上的文件列表还是空的,明明已经返回了正确的URL。试过给fileList赋新值,但没反应,是不是哪里漏了?
这是我的上传方法:
const handleUpload = async (file) => {
const res = await uploadFile(file.raw);
if (res.success) {
// 以为这样就能更新列表,但UI没变
fileList.value.push({
name: file.name,
url: res.data.url
});
}
}
你直接往
fileList.value里push是没用的,因为组件内部还维护了一份自己的状态,你这样改它根本不认。正确的做法是用组件提供的
on-success钩子,或者手动上传时调用组件暴露的方法。看你代码是手动上传模式,给你两个方案。方案一,用组件的onChange配合手动管理:
方案二,更简单粗暴,直接重新赋值整个数组触发响应式:
不过方案二有时候还是不灵,因为组件内部缓存了file对象。
最稳妥的方式是用
on-success钩子让组件自己处理,别跟它内部状态较劲:用钩子函数是最省心的,WordPress里我也老说这句话,别跟框架内部逻辑硬刚,它给你提供啥就用啥。