项目开发踩坑记:ElementUI的Radio组件change事件触发两次?

本文探讨了在Vue项目中遇到的Radio组件点击事件导致接口被调用两次的问题,分析了可能的原因,包括事件冒泡、事件绑定以及生命周期钩子中的接口调用。经过排查,发现问题是由于页面在created和activated生命周期中接口调用重复以及接口响应速度不一致导致。解决方案是优化生命周期中的接口调用逻辑和提升接口响应效率。同时,提出了在遇到类似问题时的排查步骤,强调了分析接口调用和响应时间的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   刚开始是一直在网上百度,说Radio标签解析后包含input和label标签,所以点击时一次是在input标签上,一次是在label标签上,所以是触发了两次,看了下控制台解析情况确实是这样,但是按照网上的解决方法试过之后都不行;

     具体解决方法有:

      1. 在点击事件上添加标签名的判断,确保只执行一次:if(e.target.tagName==='INPUT')  return

 <el-radio v-model="test" :label="0" @click="test($event, 0)">水果</el-radio>
 <el-radio v-model="test" :label="1" @click="test($event, 1)">芒果</el-radio>

  test(e, val) {
    if(e.target.tagName==='INPUT')  return
  }

        2.  阻止默认事件的触发;即 在点击事件上添加 .prevent修饰符;

        3.  阻止事件冒泡的触发;即 在点击事件上添加 .stop修饰符;

以上方法都试过后发现问题还未解决;

最后通过控制台发现是接口调用两次,但是第二次接口返回慢(超过5秒)导致的问题,

解决步骤:

1. 先将接口改成一次调用,发现基本没问题;

2. 在postMan中连续多次调用发现第二次接口响应确实慢;

最后结论:首先是由于页面在created和activated生命周期中触发了两次接口的问题;另外是由于接口连续多次调用时第二次响应慢的问题;

解决方案:

1. 去掉页面activated中的接口调用,使页面接口只调用一次(注: 此时的业务场景为商品编辑页,所以在切换tab时无需二次调用接口更新页面数据,也符合业务需求,所以才能去掉第二次接口的调用)

2. 后端进行sql查询优化

所以如果有相同坑的时候,建议排查步骤

1. 分析是否是生命周期导致接口多次调用的问题;

2. 分析是否是接口响应慢导致的问题;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wen_文文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值