2020-11-06 vue面试题集合
1、v-if和v-for哪个优先级更高
1).v-for优先于v-if被解析
2).做个测试,把它们放在一起,输出的渲染函数app.$option.render中可以看出先执行循环在执行条件
3).实践中也不应该把它们放在一起,因为哪怕我们只渲染列表中的一小部分元素,也得在每次渲染的时候遍历整个列表
4).通常有两种情况下导致我们这样做:
- 为了过滤列表中的项目(比如`v-for="user in users" v-if="user.isActive"`)。此时定义一个计算属性(比如`activeUsers`),让其返回过滤后的列表即可
- 为了避免渲染本应该被隐藏的列表(比如`v-for="user in users" v-if="shouldShowUsers"`)。此时把`v-if`移动至容器元素上(比如`ul`、`ol`)即可
5).文档中明确指出永远不要把v-if和v-for同时用在同一个元素上,显然是一个重要的注意事项
6).看过源码里面关于优先级的部分,src\compiler\codegen\index.js,先是处理static静态节点,再是once,接着是vfor和vif
持续更新…