.视图端:在购物车中,操作商品 - 全选、增加和减少,完成结算
.逻辑端:根据商品列表 lists 和选中商品列表 selectedLists 的变化,完成各种逻辑
.商品数据仓库的管理和使用
.购物车数据仓库的管理和使用
.侦听全选
.侦听部分选择
. 增加路由 Router
. 增加状态管理 Pinia
. 定义并暴露属性:购物车 cart
. 定义并暴露方法:添加到购物车 addToCart();根据商品 id 判断是追加还是新加
. 定义并暴露方法:加载仓库方法 fetchCart()
import { ref } from 'vue' import { defineStore } from 'pinia' export const useCartStore = defineStore('cart', () => { const isLoading = ref(false) const cart = ref([]) const addToCart = (product) => { const existingItem = cart.value.find(item => item.id === product.id) if (existingItem) { existingItem.quantity++ } else { cart.value.push({ ...product, quantity: 1 }) } } const fetchCart = async () => { isLoading.value = true let response = await fetch('https://glpla.github.io/utils/data/cart.json') let data = await response.json() cart.value = data isLoading.value = false } return { cart, addToCart, fetchCart } })
import { useCartStore } from '@/stores/cart'; const cartStore = useCartStore()
onMounted(() => { cartStore.fetchCart() })
const addCart = (item) => { cartStore.addToCart(item) }
import { useCartStore } from '@/stores/cart'; const cartStore = useCartStore()
onMounted(() => { if (cartStore.cart.length > 0) { cartData.lists = computed(() => cartStore.cart) } else { cartStore.fetchCart() } })
现场验收、课后提交实验报告