先上代码:
html:
<ul id="app">
<li
v-for="item in 20"
:class="computedClass(item)"
@click="clickIndex = item"
>{{item}}</li>
</ul>
js:
data:{
clickIndex:-1
},
methods:{
methodsClass(index){
console.log('methodsClass')
return this.clickIndex === index ? 'red' : '';
},
},
computed:{
computedClass(){
console.log('computedClass')
return (index) => {
console.log(index)
return this.clickIndex === index ? 'red' : '';
}
}
}
需求:我有个class,需要动态绑定,而且需要传入参数。
- 如果用 methods 中的方法的话,如果有20个元素,每点击其中一个元素一次,就会执行20次方法。
- 如果换成 computed 中的计算属性 ,只执行一次,但是返回的闭包也会执行20次。
问题:
- 这两种方式哪种更好,为什么?或者是说都一样?
- 对于这种情况有没有更好的解决办法
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…