v-if
和 v-for
的优先级比较
vue2
的时候:
"v-for" 优先于 "v-if",
这意味着,
如果,同时在同一个元素上使用了v-if 和 v-for,
那么,"v-for"会先执行,
然后,再根据"v-if"来决定是否渲染这个元素。
vue3
的时候:
"v-if" 比 "v-for" 有更高的优先级,
这意味着,
当这两个指令同时存在于一个节点上时,v-if 将先于 v-for 被执行
但是,
Vue3官方文档不推荐,在同一个元素上,同时使用 v-if 和 v-for,
因为,
这样做,可能会使得指令的优先级变得不明显,导致代码难以理解和维护,
此外,如果 v-if 的条件,无法访问到 v-for 作用域内定义的变量别名,也可能导致意料之外的行为。
另,但是,一种解决这个问题的方法:
在外层包装一个`<template>`标签,并在其上使用`v-for`,
这样,`v-if`可以放在内部的元素上,从而避免同时应用于同一个元素,
这种方法不仅使得代码更加清晰易读,也能确保指令按照预期的顺序执行。