思路:结论->细节->实际情况
实际使用过程中,v-if和v-for是不能同时使用的
在vue2中,v-for的优先级高于v-if。如果一起使用,是先执行循环,再执行判断。也就是说,哪怕只渲染很少一部分元素,也会在每次重新渲染的时候遍历整个列表,浪费性能。
再vue3中,v-if的优先级高于v-for,由于v-if执行的时候,调用的变量还不存在,所以会报错。
实际情况:
1.避免渲染本应隐藏的列表,可以在外层套一层<template></template>,在template中进行v-if判断
2.过滤列表中的数据;定义一个计算属性computed,对返回过滤后的列表进行渲染