//pinia的使用简单来说就是在一个文件里面写好对应的数据和逻辑代码(js代码),然后在需要的vue组件中import {mapState, mapActions} from 'pinia'和import??Store??from '../store/counter'
//需要注意的是mapState和 mapActions都需要...的写法才可以用,并且mapState是在computed里面写,mapActions是在methods里面写,所以这里的'count','doublecount'代表传递的数值,'add','minus','asyncadd'代表传递的方法
...mapState(Store,['count','doublecount'])
...mapActions(Store,['add','minus','asyncadd'])
//然后还需要注意的就是对应的数据和逻辑代码(js代码)的书写,下面代码这里的state和vue里面data类似,getters和computed类似, ?actions和methods类似。
import { defineStore } from 'pinia'
const Store = defineStore('cart', {
?? ?state(){
?? ??? ?return {
?? ??? ??? ?cart:[],
?? ??? ?}
?? ?},
?? ? ? persist: true,
?? ?getters: {
?? ??? ?totalcount(state){
?? ??? ??? ?return state.cart.reduce((sum,item)=>sum+item.count,0)
?? ??? ?},
?? ??? ?totalprice(state){
?? ??? ??? ?return state.cart.reduce((sum,item)=>sum+item.price*item.count,0)
?? ??? ?}
?? ?},
?? ?actions:{
?? ??? ?addCart(goods){
?? ??? ??? ?const list=this.cart.find(item=>item.id==goods.id)
?? ??? ??? ?if(list){
?? ??? ??? ??? ?list.count++
?? ??? ??? ?}else{
?? ??? ??? ??? ?this.cart.push({
?? ??? ??? ??? ??? ?...goods,
?? ??? ??? ??? ??? ?count:1,
?? ??? ??? ??? ?})
?? ??? ??? ?}
?? ??? ?},
?? ??? ?removeCart(id){
?? ??? ??? ?this.cart=this.cart.filter(item=>item.id!==id)
?? ??? ?}
?? ?}
})
export default Store
//当然还有和vue-router一样操作的js文件,但是相对简单多了,不用多余的配置。直接这样就行
import {createPinia} from 'pinia'
const pinia=createPinia()
export default pinia
//最后在main.js文件中use(pinia)
//如果想在pinia中实现数据的可持续化存储,还可以进行npm i?pinia-plugin-persistedstate对应包的下载,然后进行简单的import导入,use,和在对应的js文件persist: true,就可以了