elementUI下拉选择select反应慢

最近遇到一个很诡异的问题,elementUI的select切换下拉选项,联动另一个下拉选项的选项数据时,变得很慢,改变选项后半天这个下拉框还不收起改变值,后面研究了一下,发现是change事件要执行完,下拉框才会收起改变值。但是我这个change事件要改变的是另一个下拉框选项数据,这个数据有特别大上千条,这个在渲染的dom的时候很慢,因此影响了第一个下拉框的改变响应。
elementUI下拉选择select反应慢
elementUI下拉选择select反应慢
elementUI下拉选择select反应慢
后来想了一个办法,让数据渲染好,只是控制他的显示隐藏就好了,这个地方要注意不要用v-if v-else,要用v-show
vue中的 v-if 和 v-show 二者都可以动态的控制元素的隐藏和显示,但是他们控制的原理是不同的

v-if

v-if 控制元素显示或隐藏是把dom元素整个的渲染或者删除,如果删除,也就是页面中不存在这个dom元素,以此达到隐藏的效果;

所以v-if在每次切换的时候都会重新创建或者销毁元素,有较高的切换性能消耗;

而且v-if是惰性的,如果在初始渲染时条件为假,那就什么也不做,直到条件第一次变为真时,需要渲染时才会开始渲染条件块

v-show

v-show则是无论你的初始条件是什么,元素都会被渲染,就是dom元素始终是存在的,v-show只是通过控制css中的display属性来控制他的显示或隐藏;

它拥有比较高的初始渲染消耗;

使用场景
  如果元素需要进行比较频繁的切换的话,推荐使用v-show,

如果很少用到切换,或者元素可能永远都不会显示出来的话,就使用v-if

注意:如果已经在css中明确写出display : none 的话,在v-if中就算设置v-if为true也是不能让元素显示的,因为他没办法覆盖或者修改掉css里面的

display : none属性,他只是会修改element style为display:""或者display:none
  最后修改如下:
1. 去掉change事件
2. v-show控制显示哪个对应的标签数据,elementUI下拉选择select反应慢
ps: 如果有多个数组呢?难道我要写多个这样的dom? 大家有没有更好的处理方法?