【uniapp重大bug】uni-data-select的localdata改变,也会触发@change方法

bug描述

uni-data-select的下拉列表值localdata是动态获取的,且绑定了@change方法,在页面加载后,请求localdata的列表数据,给localdata重新赋值,此时发现自动触发了@change方法

当前uni版本:^2.0.2-3070920230324001 vue2

bug复现过程

页面写个简单的演示代码:

javascript 复制代码
<uni-forms ref="form" :modelValue="formObj" label-position="top" label-width="100%">
  <uni-forms-item label="绑定单位:">
    <uni-data-select
      v-model="formObj.tenantId"
      :localdata="tenantList"
      placeholder="请选择绑定单位"
      @change="changeTenant"
    ></uni-data-select>
  </uni-forms-item>
</uni-forms>

export default {
  data() {
	return {
	  tenantList: [],
      formObj: {
        tenantId: null,
      },
	}	
  },
  methods: {
	changeTenant(e) {
      console.log('uni-data-select改变了')
    },
  }
}

这样写没啥事,此时localdata绑定的是个静态值,下面我们改变一下localdata(想当于实际业务中的获取接口值)

我们在created()中改变该值:

javascript 复制代码
setTimeout(() => {
  this.tenantList = [
    { value: 1, text: '中国移动', },
    { value: 2, text: '中国联通', },
  ]
}, 1000)

这时你会发现,已经自动触发@change方法了,而且还触发了两次

解决方案

这是组件的问题,没法从根源解决

其他方案

不要使用组件的@change方法,自己用watch监听值变化吧

相关推荐
蓝莓味的口香糖6 小时前
【vue3】组件的批量全局注册
前端·javascript·vue.js
独泪了无痕6 小时前
自动导入 AutoImport:告别手动引入依赖,优化Vue3开发体验
前端·vue.js·typescript
全栈小59 小时前
【前端】Vue 组件开发中的枚举值验证:从一个Type属性错误说起
前端·javascript·vue.js
꧁꫞꯭零꯭点꯭꫞꧂10 小时前
G6绘制机柜 以及机柜设备的demo
前端·javascript·vue.js
wuhen_n11 小时前
5年前端,我为什么要all in AI Agent?
前端·vue.js·ai编程
optimistic_chen11 小时前
【Vue入门】创建Vue工程环境和响应式函数
前端·javascript·vue.js·前端框架·html
前端Hardy12 小时前
用 uni-app x 重构我们的 App:一套代码跑通 iOS、Android、鸿蒙!人力成本直降 60%
前端·ios·uni-app
林恒smileZAZ12 小时前
告别满屏 v-if:用一个自定义指令搞定 Vue 前端权限控制
前端·javascript·vue.js
AI论文酱12 小时前
Vue.js入门(搭建第一个页面,新手零配置)
vue.js
SuperEugene13 小时前
NPM Script 实战:常用命令设计与封装|Vue 工程化篇
前端·javascript·vue.js·前端框架·npm