v-if 和 v-for的优先级

1. vue2中v-if 和 v-for的优先级

v-for的优先级高于v-if。

v-for比v-if优先级高,所以每次执行v-for都会执行v-if,一起使用会浪费性能,不建议同时使用。
解决办法:
v-if写在v-for的前面一层。

  <div v-if="flag">
       <div v-for="item in list" :key="item.id">
          {{ item.id }} ---- {{ item.name }}
       </div>
   </div>

如果v-if依赖于v-for中的某一个数据,可以用computed计算属性和filter来实现。

 <div v-for="item in tempList" :key="item.id">
         {{ item.id }} ---- {{ item.name }}
  </div>

 data() {
      return {
        list: [
            {
                id: 1,
                name:'jjj',
                status: '1'
            },
            {
                id: 2,
                name:'kkk',
                status: '2'
            },
        ],
        flag: true
      }
    },
    computed: {
        tempList: function() {
            return this.list.filter((item, index)=> {
                return item.status === '1';
            })
        }

    }

2. vue3中v-if 和 v-for的优先级

v-if的优先级高于v-for。

那么是不是vue3中鼓励这样使用呢?当然不是,官方文档仍然不推荐同时使用。

 <div v-for="item in list" v-if="item.status" :key="item.id">
          {{ item.id }} ---- {{ item.name }}
   </div>
    data() {
      return {
        list: [
            {
                id: 1,
                name:'jjj',
                status: '1'
            },
            {
                id: 2,
                name:'kkk',
                status: '2'
            },
        ],
      }
    },

项目报错:
在这里插入图片描述

总结: 官方始终不推荐v-for和v-if同时使用,带来性能方面的浪费。如果必要的情况下,可以选择使用computed和filter过滤掉不需要显示的项目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值