elementPlus的el-switch在初始化时会调用一次change事件

elementPlus的el-switch在初始化时会调用一次change事件

出现问题时,先是到官网上看了看是不是使用的API有问题,但是官网并没有说明有什么问题,并且只提供了这一个事件函数(change)。

所以应该不是我使用的问题,又搜索了一下问题,看其他人也有这个问题,搜到的有三个版本:

  1. 可以使用beforeChange来拦截,已达到change事件在初始化时不会被调用的效果
  2. 方法中加$event,就是@change="change($event, item)"
  3. 绑定值不要加:,即:active-value="1"改为cative-value="1"

第三个,看他的描述,本就是数据类型没有对应。

第二个,恕我没有理解,也很纳闷写文章的人究竟有没有解决这个问题。

但是第一个,觉得可以一试。但是问题来了,如果使用beforeChange,那么就需要为每个数据添加一个类似firstRender之类的属性,然后在首次渲染过后更改这个值,觉得很不好,也不想添加额外的属性,遂放弃。

处理方式

最后还是经过了一定的思考,既然change事件被调用了,那自然就是数据发生了变化,我没有在加载数据时修改过第二次数据,那么就只可能是在赋值给列表时,检测到了这个变化。

所以初始的列表数据data被修改之前,其中的状态字段应该是个未被定义的值(row.status -> undefined),被赋值后,则是truefalse,所以我有了自己的解决方式。

最终的处理方式是使用v-if在绑定值为undefined时不渲染该组件,至少在我这里是可用的。

posted @ 2025-08-04 15:28  GodGuoz  阅读(22)  评论(0)    收藏  举报