这段代码怎么优化export default { data() { return { stepper: 1, shopcarList: [], }; }, methods: { onSubmit() { console.log(111); }, add(index) { // console.log(index); this.$set( this.shopcarList[index], this.shopcarList[index].num, this.shopcarList[index].num++ ); }, del(index) { if (this.shopcarList[index].num == 1) { this.$toast("不能再减了"); } else { this.$set( this.shopcarList[index], this.shopcarList[index].num, this.shopcarList[index].num-- ); } }, }, created() { this.shopcarList = JSON.parse(localStorage.getItem("shopcar")) || []; console.log(this.shopcarList); }, computed: { isAllChecked: { set(val) { this.shopcarList.forEach((ele) => { ele.isChecked = val; }); }, get() { return this.shopcarList.every((ele) => { return ele.isChecked == true; }); }, }, priceTotal() { let sum = 0; let newPrice = this.shopcarList.filter((ele) => { return ele.isChecked == true; }); sum = newPrice.reduce((pre, current) => { return (pre += current.price * current.num); }, 0); return sum * 100; }, }, }; </script>
时间: 2024-02-14 12:06:22 浏览: 78
benCoding.Stepper:钛步进控制模块
这段代码可以进行以下优化:
1. 将 `methods` 中的 `add` 和 `del` 方法中的 `$set` 改为直接修改属性值,例如 `this.shopcarList[index].num++` 和 `this.shopcarList[index].num--`。
2. 在 `computed` 中的 `priceTotal` 方法中,可以使用 `filter` 和 `reduce` 方法的链式调用,将其简化为一行代码。
优化后的代码如下:
```
export default {
data() {
return {
stepper: 1,
shopcarList: [],
};
},
methods: {
onSubmit() {
console.log(111);
},
add(index) {
this.shopcarList[index].num++;
},
del(index) {
if (this.shopcarList[index].num == 1) {
this.$toast("不能再减了");
} else {
this.shopcarList[index].num--;
}
},
},
created() {
this.shopcarList = JSON.parse(localStorage.getItem("shopcar")) || [];
console.log(this.shopcarList);
},
computed: {
isAllChecked: {
set(val) {
this.shopcarList.forEach((ele) => {
ele.isChecked = val;
});
},
get() {
return this.shopcarList.every((ele) => ele.isChecked);
},
},
priceTotal() {
return this.shopcarList.filter((ele) => ele.isChecked)
.reduce((pre, current) => pre += current.price * current.num, 0) * 100;
},
},
};
```
阅读全文