v-if和v-for优先级问题

123 阅读1分钟

这个问题要分vue2和vue3两个版本来回答,因为两个版本的优先级不一样,我们直接看官网的描述;
vue2: image.png

vue3: image.png 在vue3中,v-ifv-for优先级更高,那也就意味着v-if不能再使用v-for里面的数据,我们平时
<p v-if="item == 'B'" v-for="item in list" :key="item">{{item}}</p>
这样的写法将不能生效。官方也不建议我们在同一个元素上同时使用这两个指令。
如果有这样的需求,我们可以使用computed计算属性,把不需要显示的数据过滤掉:

//html
<p v-for="item in _list" :key="item">{{item}}</p>

//js
computed: {
    _list(){
        return this.list.filter(item => item == "B");
    }
}