v-if 和 v-for 优先级谁更高?

2023-11-28  本文已影响0人  简单tao的简单

vue2 说 v-for 比 v-if 优先级高

上代码证明vue2中v-for比v-if优先级高

<ul>
      <li v-for="user in users" v-if="user.age>18" :key="user.id">
        {{ user.name }}
      </li>
</ul>

模板指令的代码都会生成在render函数中,通过this.$options.render就能得到渲染函数。

created() {
    console.log('输出render函数', this.$options.render);
}

控制台输出结果为:


_vm._l是vue的列表渲染函数,作用就是循环处理users的,第9行就是嵌套在_l函数中的,也就是说,-l函数包含了user.age>18的判断,也就是每循环一次列表,就会判断一次user.age>18,我们看到最后的结果就是return后面的。
所以得到结论:在vue2中v-for优先级比v-if高。

vue3 说 v-if 比 v-for 优先级高


上代码证明vue3中v-if比v-for优先级高

<ul>
      <li v-for="user in users" v-if="user.age>18" :key="user.id">
        {{ user.name }}
      </li>
</ul>

然而浏览器报错了



说不能读取undefined的属性age,也就是没有获取到v-if指令里的user的信息,也就是先执行的v-if,而此时v-for还没有执行,所以v-if里的user是undefined。
所以得到结论:在vue3中v-if优先级比v-for高。

上一篇下一篇

猜你喜欢

热点阅读