v-for的优先级比v-if高
所以当:
<ul>
<li v-for="user in users" v-if="user.isActive">
{{user.id}}
</li>
</ul>
时,代码的执行顺序会是
this.users.map(function(user)){
if(user.isActive){
return user.id
}
}
因此哪怕我们只渲染出一小部分用户的元素,也得在每次重渲染的时候遍历整个列表,不论活跃用户是否发生了变化。会影响性能
所以,我们可以把把上面的改为计算属性:
computed:{
activeClass:function(){
this.users.filter(function(user)){
return user.isActive
}
}
}
<ul>
<li v-for="user in activeClass" :key="user.id">
{{user.id}}
</li>
</ul>