v-if和v-for連用出現的問題

解決方案有兩個能夠根據具體狀況而定vue

1.當控制v-if的元素不存在v-for中 , 能夠使用template包裹住對應的v-for , 也能夠使用父級元素添加v-if , 能夠不加載從而優化性能性能

添加一個template優化

<div>
    <template v-if="showActive">
        <div v-for"item in list" :key="item.id">{{item.value}}</div>
    </template>
    <div class="bottom"/>
</div>

添加到父級this

<ul v-if="showActive">
   <li v-for="item in list" :key="item.id">{{item.value}}</li>
</ul>

2.若是v-if 控制的元素存在v-for中 , 能夠經過使用計算器屬性來回避 , 好比使用計算器屬性在頁面加載以前進行一邊過濾code

computed: {
    loadList() {
       const { list } = this
       return list.filter(item => item.value)
    }
}


問題的實質是由於在vue中會優先執行v-for, 當v-for把全部內容所有遍歷以後 , v-if再對已經遍歷的元素進行刪除 , 形成了加載的浪費 , 因此應該在執行v-for以前優先執行v-if , 能夠減小加載的壓力
相關文章
相關標籤/搜索