antd vue中的upload组件,实现在文件选择弹框打开前先弹一个自定义弹窗进行提示

本文介绍了在Vue3中如何在for循环中使用ref对象处理文件上传,并在点击确认后弹出文件资源管理器。还讨论了如何通过替换按钮在确认对话框后触发上传组件的事件。
摘要由CSDN通过智能技术生成

需求:在选择文件上传之前,需要进行一个提示,在点击确认之后,再弹出文件资源管理器。
注意点:
1、Vue3中,如何获取在for循环中设置的ref对象。
for循环中,如果给每一个元素都绑定一个ref对象,显然不现实。可以通过改变ref的绑定方式(:ref=“el=>{}”),用一个数组来接收所有的ref元素,然后在使用时通过index获取对应的ref对象。
参考文档:https://www.cnblogs.com/we-smile/p/16313550.html

2、点击替换按钮,先弹出提示框点击确认后再弹出文件资源管理器。
在upload组件中设置一个替换按钮,让他隐藏,在upload组件外面设置一个替换按钮并设置一个点击事件handleReplace,在handleReplace中设置弹窗的显示,在弹窗中点击确认的handleOK方法中通过ref对象控制upload中替换按钮的点击事件的发生,从而弹出文件资源管理器。

主要代码:

	// A code block
	<div v-for="(file, index) in fileListArr" :key="index">
        <div class="imgList">
          <a>
            <div class="mask">
              <Upload
                action="文件保存的地址"
                :accept="type"
                v-model:file-list="fileList2"
                @change="handleChangeFile"
              >
                <RetweetOutlined
                  :ref="
                    (el) => {
                      iconRefs[index] = el;
                    }
                  "
                  class="icon-replace"
                  @click="handleReplace1(file)"
                  v-show="false"
                />
              </Upload>
              <RetweetOutlined class="icon-replace" @click="handleReplace(file, index)" />
            </div>
          </a>
        </div>
        <a-modal
          :visible="visible"
          @cancel="cancel"
          @ok="handleOK(index)"
          title="确认要替换该素材吗?"
          style="width: 350px"
        >
          <p style="border: none; font-size: 15px; text-align: center"
            >确认吗,真的确认吗???</p
          >
        </a-modal>
      </div>
	// 主要功能代码
      const iconRefs = ref([]); // 
      const visible = ref(false); //控制modal组件的显示和隐藏
		
	// 提示框点击确认触发事件
	  const handleOK = (index) => {
        iconRefs.value[index].click();
        visible.value = false;
      };

	//点击替换按钮
	const handleReplace = (file, index) => {
       visible.value = true; //弹出提示框
    };

本来我想使用如下方法展示弹窗,但是本地运行没问题,部署到线上后,点击弹窗的确认和取消按钮弹窗不会关闭,目前还不知道原因。

		Modal.confirm({
            title: '确认要替换该素材吗?',
            content: '确认吗,真的确认吗???',
            okText: '确认',
            cancelText: '取消',
            onOk() {
              console.log('ok');
              iconRefs.value[index].click();
            },
            onCancel() {
              console.log('cancel');
            },
          });
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值