uni-app 页面两个u-upload组件会同时触发两个选择弹框
uni-app 页面两个u-upload组件会同时触发两个选择弹框
产品分类:
uniapp/App
PC开发环境操作系统:
Windows
PC开发环境操作系统版本号:
win10
HBuilderX类型:
正式
HBuilderX版本号:
3.1.18
手机系统:
全部
手机系统版本号:
Android 10
手机厂商:
华为
页面类型:
vue
打包方式:
云端
项目创建方式:
HBuilderX
App下载地址或H5网址:
测试过的手机:
苹果和VIVO
示例代码:
<u-upload @on-success="upImgCallBack1" @on-choose-complete="uploadImg1()" :max-count="1" name="file" upload-text="您可以选择上传二维码(一张)" del-bg-color="#dcdcdc" :auto-upload="true" :action="actionUrl" :header="header" :multiple="false" :file-list="toarray(data.qrcode)" ref="upload"></u-upload>
<u-upload @on-success="upImgCallBack" @on-remove="onRemove(index)" @on-choose-complete="uploadImg(index)" :max-count="3" name="file" upload-text="最多三张" del-bg-color="#dcdcdc" :auto-upload="true" :action="actionUrl" :header="header" :multiple="false" :file-list="toarray(item.stepImage)" ref="upload"></u-upload>
操作步骤:
登录后点击我的–发布/管理任务–发布任务–任意分类–第一页资料任意填写–下一步 点击添加步骤
此时页面就同时出现了两个u-upload的情况(并不是每次点击都会出现两个弹框,偶尔会出现,概率比较大)
预期结果:
同时只出现一个弹框
实际结果:
点击选择图片,同时出现两个弹框
bug描述:
一个页面出现两个或两个以上的u-upload 后, 点击选择图片, 可以会同时弹出 拍摄+从相册选择 如果点的不是对应的那个, 就会导致APP直接崩溃
更多关于uni-app 页面两个u-upload组件会同时触发两个选择弹框的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 页面两个u-upload组件会同时触发两个选择弹框的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个典型的组件事件冒泡导致的冲突问题。当页面中存在多个u-upload组件时,点击事件可能会同时触发多个组件的选择弹框。
问题原因:
- u-upload组件内部的选择按钮事件没有正确阻止冒泡
- 多个组件的事件监听器同时响应了点击事件
- 组件引用ref重复(代码中两个组件都使用了
ref="upload")
解决方案:
- 修复ref重复问题:
<u-upload ref="upload1" ... />
<u-upload ref="upload2" ... />
- 使用v-if控制组件显示: 如果第二个u-upload是在某个条件下显示的,确保使用v-if而不是v-show:
<u-upload v-if="showSecondUpload" ... />
- 手动触发选择: 通过ref手动调用选择方法,避免直接点击:
// 为每个上传按钮绑定不同的事件
chooseImage1() {
this.$refs.upload1.chooseFile();
},
chooseImage2() {
this.$refs.upload2.chooseFile();
}

