跳到主要内容

认识

2024年03月18日
柏拉文
越努力,越幸运

一、认识


二、细节


2.1 解析

2.2 生成

<div v-if="vIf"> v-if 指令 </div>

生成的渲染函数如下所示:

(vIf) ? _c('div', [_v(" v-if 指令 ")]) : _e()

因此, v-if 节点的处理结果是一个三元表达式

2.3 渲染

三、问题


3.1 Vue.js 2.0 v-if 与 v-for 的优先级?

Vue.js 2.0 中, 在同一元素上使用 v-ifv-for 时, v-forv-if 的优先级更高(源码中 v-for 优先被处理), 这意味着 v-if 将分别重复运行于每个 v-for 循环中。当 v-forv-if 在同一元素上结合使用时, 每次循环迭代时都会重新计算条件, 重新渲染和销毁元素, 可能会导致不必要的性能损耗。正确的做法是通过 computed 筛选需要渲染的元素 或者通过将 v-forv-if 分开使用即可。