作者:手机用户2502920591_700 | 来源:互联网 | 2023-06-15 22:12
之前看过有一种关于v-for和v-if之所以产生冲突的解释,我觉得是比较合理的说法,这里记录一下。vue2里,同一个标签内v-for的执行优先级比v-if高,也就是说先执行循环渲染生成了这些dom元素,然后此时再去执行v-if的判断条件想定义dom的渲染,在这里冲突就出现了,dom已经生成,再想去销毁,那dom元素人家就不乐意了,不让你v-if说了算,不能你说出现就出现,你说消失就消失,于是视图渲染不更新,产生了报错。vue3底层将v-if和v-for的执行优先级与vue2反其道行之,先执行渲染判断再执行循环,所以解决了这个问题。
如果原来vue2有需求是希望for循环和判断并存的话,我的建议是在属性v-for的那个标签里面再套一层标签,里面那个子标签加上v-if做判断就好了。
个人拙见,欢迎指出不足。