**computed优化方案**
<template>
//优化前
<div>
<ul>
<li v-for="(item,index) in users" :key="index" v-if="item.isActive">{{item.name}}</li>
</ul>
</div>
//优化后
<div>
<ul>
<li v-for="(item,index) in activeUsers" :key="index">{{item.name}}</li>
</ul>
</div>
</template>
<script>
export default{
data(){
return{
users:[
{name:'computed优化1',isActive:false},
{name:'computed优化2',isActive:true},
{name:'computed优化3',isActive:true},
]
}
},
computed:{
activeUsers() {
return this.users.filter((user) =>{return user.isActive})
}
}
}
</script>
**computed优化多判断条件**
**优化前**
<span class="wait-pay-red" v-if="item.stat == 'INIT' && item.orderType == 1">购车待付款</span>
<span class="span-green" v-if="item.stat == 'SUCCESS' && item.orderType == 1">支付成功</span>
<span class="wait-pay-red" v-if="item.stat == 'INIT' && item.orderType == 2">租车待付款</span>
**优化后**
<span class="wait-pay-red">{{statType}}</span>
<script>
export default{
data(){
return{
users:[
{stat:'HANDLING',orderType:1}
]
}
},
computed:{
statType(){
let item = this.users[0]
if(item.stat == 'INIT' && item.orderType == 1) return '购车待付款'
if(item.stat == 'SUCCESS' && item.orderType == 1) return '支付成功'
if(item.stat == 'INIT' && item.orderType == 2) return '租车待付款'
if(item.stat == 'RETURNED' && item.orderType == 2) return '已还车'
if(item.stat == 'HANDING'&& item.orderType == 1) return '付款中'
if(item.stat == 'FAIL'&& item.orderType == 1) return '交易失败'
},
}
}
</script>
**filters过滤器优化**
**优化前**
<div class="order-tabTwo" v-for="(item,index) in users" :key="index">
<span class="wait-pay-red" v-if="item.stat == 'INIT'">购车待付款</span>
<span class="span-green" v-if="item.stat == 'SUCCESS'">支付成功</span>
</div>
**优化后**
<div class="order-tabTwo" v-for="(item,index) in users" :key="index">
<span class="span-green">{{item.stat | statText}}</span>
</div>
<script>
export default{
data(){
return{
users:[
{stat:'SUCCESS',orderType:1}
]
}
},
filters:{
statText:(value)=>{
let str;
let list = [
{code:'INIT',label:'购车待付款'},
{code:'SUCCESS',label:'支付成功'},
{code:'HANDLING',label:'付款中'},
{code:'RETURNED',label:'购车完成'},
{code:'CHACEL',label:'取消交易'}
]
for(let o of list){
if(o.code == value) str = o.label
}
return str;
}
},
}
</script>