<template> <div> <router-view /> <div class="title">购物车</div> <div class="shop_goods" v-for="(item, index) in shopcarList" :key="index"> <van-checkbox v-model="item.isChecked"></van-checkbox> <van-card :title="item.name" :thumb="item.img"> <template #price> <span>¥{{ item.price }}</span> </template> <template #num> <p class="count"> <span @click="del(index)">-</span> <span>{{ item.num }}</span> <span @click="add(index)">+</span> </p> </template> </van-card> </div> <div class="shopcar_total"> <van-submit-bar :price="priceTotal" @submit="onSubmit"> <template #button> <span class="total"> 去结算 </span> </template> <van-checkbox v-model="isAllChecked">全选</van-checkbox> </van-submit-bar> </div> </div> </template> <script> 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-16 20:27:49 浏览: 75
vue-router 按需加载 component: () = import() 报错的解决
这个页面可以优化的地方有:
1. 使用vue的keep-alive标签,对于需要频繁切换的组件进行缓存,减少重复渲染。
2. 使用v-show代替v-if,因为v-if每次都会销毁和重新创建DOM元素,而v-show只是控制元素的显示和隐藏。
3. 对于频繁使用的方法,可以将其提取为公共方法,避免重复代码。
4. 对于localStorage的操作,可以将其封装为一个单独的模块,并进行数据的有效性验证,避免出现数据异常。
5. 对于复杂的计算属性,可以使用缓存机制,避免重复计算。
6. 对于数组的修改,可以使用Vue提供的set方法,确保数据的响应式更新。
7. 可以考虑使用分页或懒加载等技术,对于大量数据进行分批加载,减轻页面的渲染压力。
8. 对于一些不必要的DOM元素,可以使用v-if或v-show进行控制,避免无意义的渲染。
9. 对于一些常用的组件,可以考虑进行全局注册或按需加载,避免重复引入和渲染。
阅读全文