2023-07-25 uview1.0的u-number-box组件在渲染时会触发change,如何才能避免事件影响?==》设置判断条件并增加时间延迟

发布时间 2023-07-25 14:06:53作者: 哎呦你可棒棒了

前言:购物车用到加减购物车数量的一个步进器组件,使用的是uview组件1.0版本的u-number-box。

该组件设置了一个@change事件,该事件会在页面渲染的时候触发一次,如果你在里面调用了接口,比如增加/减少购物车数量,那么每次一刷新购物车该事件就会被触发,从而导致不必要的报错。

解决方案:

在data定义一个变量用于判断是否执行调接口的逻辑:

isDo: true,

然后在@change对应事件中调用接口之前判断isDo为true就阻止,即:

if (this.isDo) return;

最后在mounted里面设置500毫秒延迟,500毫秒后设置isDo为false,那么在渲染的时候就不会触发@change里面的接口了,而且500毫秒后该接口就变成了允许触发。

  mounted() {
    setTimeout(() => {
      this.isDo = false;
    }, 500);
  },