-
-
Notifications
You must be signed in to change notification settings - Fork 3.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[vue] v-if和v-for的优先级是什么?如果这两个同时出现时,那应该怎么优化才能得到更好的性能? #270
Comments
好像是 |
v-for 的优先级更高 |
可以使用v-show |
优化:在v-for之前就把数据过滤出来,如在computed里就把不需要展示的项去除掉 |
当它们处于同一节点,v-for 具有比 v-if 更高的优先级。可以将v-if 置于外层元素 或 着把v-if放在上包裹着v-for。 |
首先,关于v-if和v-for的优先级,可以在源码compiler/codegen/index.js中找到genElement方法,里面的if else判断,可以清楚看到for的判断在if判断之上,由此,可证明v-for的优先级高于v-if 如果v-if和v-for同时出现,分两种情况: {{item}} ,可以通过vue.$options.render打印出渲染函数,可以清晰的看到会优先执行for循环,再执行if判断2、当v-if出现在父级中,子级有v-for,此时再打印vue.$options.render,会发现会优先执行if判断。 若想优化,提升性能,v-if需要优先执行,可以在v-for外层加一层template搭配v-if使用。 |
牛逼啊 |
v-if和v-for的优先级:v-for > v-if |
在vue2中v-for优先级高 |
优先级v-for 拥有比 v-if 更高的优先级。这意味着,当 v-if 和 v-for 同时出现在同一个元素上时,v-for 将先被解析和执行,然后在每个循环项上应用 v-if。 优化性能:当列表较大且动态变化时,为了提高性能,应尽量避免在同一个元素上同时使用 v-if 和 v-for。这是因为每次循环都会执行 v-if 条件判断,导致性能下降。
在上述示例中,通过将 v-if 放在外层容器元素上,并在 computed 属性中对数据进行预处理,可以减少 v-if 的条件判断次数,提高性能。 总结来说,当 v-if 和 v-for 同时出现时,应优先考虑减少 v-if 的条件判断次数,将其放在外层容器元素上。另外,对数据进行预处理或筛选,可以避免在模板中频繁使用 v-if 进行条件判断,提高性能。 |
[vue] v-if和v-for的优先级是什么?如果这两个同时出现时,那应该怎么优化才能得到更好的性能?
The text was updated successfully, but these errors were encountered: