【经典面试题】v-if和v-for为什么不能同时使用,以及解决办法

原因:

由于v-for的优先级比v-if高,所以导致每循环一次就会去v-if一次,而v-if是通过创建和销毁dom元素来控制元素的显示与隐藏,所以就会不停的去创建和销毁元素,造成页面卡顿,性能下降


解决方案:

第一种:将 v-if 和 v-for 分别放在不同标签中

<ul v-if="active">
   <li v-for="(item, index) in list" :key="inde">
       <p>{
   
   {item.name}}</p>
   </li>
 </ul>

第二种:如果 v-if 和 v-for 只能放在同一级标签中,使用计算属性进行改造:

let title = "自定义"
 <ul v-for="(item, index) in lists(list, title)" :key="index">
   <li>{
   
   {item.name}}</li>
 </ul>
computed: {
    lists () {
      return (item, name) => {
        return item.filter(item => item.name !== name)
      }
    }
  }

以上两种方法都可以解决 eslint 的报错

猜你喜欢

转载自blog.csdn.net/m0_64346035/article/details/124857549
今日推荐