学习vue第三天

学习vue第三天
麟玖Sam状态管理Pinia
- Pinia是Vue的存储库,它允许跨组件/ 页面共享状态
- pinia中的store是模块化的,根据不同的状态划分不同的模块
- 创建ProductStore 用于存储商品列表状态
// src/stores/ProductStore.js
import { defineStore } from "pinia"
import products from "@/data/products.json"
export const useProductStore = defineStore("ProductStore",{
state: () => {
return {
products,
test:"test"
}
}
})
// src/App.vue
import {useProductStore} from "./stores/ProductStore"
useProductStore();

- 组件获取状态
// App.vue
import { useProductStore } from "./stores/ProductStore";
import { storeToRefs } from "pinia";
useProductStore();
const { products, test } = storeToRefs(useProductStore());
const productStore = useProductStore();
productStore.fill();
// src/stores/ProductStore.js
export const useProductStore = defineStore("ProductStore",{
state: () => {
return {
products,
test:"test"
}
},
actions:{
async fill() {
this.products = (await import("@/data/products.json")).default;
}
}
})
- 将商品加入购物车
// src/stores/CartStore.js
import {defineStore} from "pinia";
export const useCartStore = defineStore("CartStore",{
state: () => {
return {
items:[],
}
},
actions: {
addItems(count,product){
for (let i = 0; i < count; i++){
this.items.push(product)
}
}
}
})
// App.vue
<script setup>
import { useCartStore } from "@/stores/CartStore";
const cartStore = useCartStore();
</script>
<template>
<ProductCard @addToCart="cartStore.addItems($event, product)"/>
</template>
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果