elementPlus的el-switch在初始化时会调用一次change事件
出现问题时,先是到官网上看了看是不是使用的API有问题,但是官网并没有说明有什么问题,并且只提供了这一个事件函数(change)。
所以应该不是我使用的问题,又搜索了一下问题,看其他人也有这个问题,搜到的有三个版本:
- 可以使用
beforeChange
来拦截,已达到change
事件在初始化时不会被调用的效果 - 方法中加
$event
,就是@change="change($event, item)"
- 绑定值不要加
:
,即:active-value="1"
改为cative-value="1"
第三个,但是看他的描述,本就是数据类型没有对应。
第二个,恕我没有理解,也很纳闷写文章的人究竟有没有解决这个问题。
但是第一个,觉得可以一试。但是问题来了,如果使用beforeChange
,那么就需要为每个数据添加一个类似firstRender
之类的属性,然后在首次渲染过后更改这个值,觉得很不好,也不想添加额外的属性,遂放弃。
处理方式
最后还是经过了一定的思考,既然change
事件被调用了,那自然就是数据发生了变化,我没有在加载数据时修改过第二次数据,那么就只可能是在赋值给列表时,检测到了这个变化。
所以初始的列表数据data
被修改之前,其中的状态字段应该是个未被定义的值(row.status -> undefined),被赋值后,则是true
或false
,所以我有了自己的解决方式。
最终的处理方式是使用v-if
在绑定值为undefined
时不渲染该组件,至少在我这里是可用的。