vue Pinia 状态管理库

Pinia 是 Vue 的专属状态管理库,它允许你跨组件或页面共享状态。与 Vuex 相比,Pinia 不仅提供了一个更简单的 API,也提供了符合组合式 API 风格的 API,最重要的是,搭配 TypeScript 一起使用时有非常可靠的类型推断支持。今天主要记录一下在Vue3下使用Pinia的使用情况:

一、安装

yarn add pinia

或者

npm install pinia

二、创建Pinia

复制代码
import { createApp } from 'vue'
import App from './App.vue'
import { createPinia } from 'pinia'

const pinia = createPinia()

createApp(App).use(pinia).mount('#app')

三、定义属性和方法

TypeScript 复制代码
import { defineStore } from 'pinia'

export const useTemplate = defineStore('useTemplate',{
    state:() => ({
        count:0
    }),
    getters:{
        doubleCount:(state) =>{
            state.count * 2
        },
        threeCount:(state) => state.count * 3
    },
    actions:{
        addCount(){
            this.count ++
        },
        minusCount(){
            this.count --
        }
    }
})

在state中定义属性,和data类似,getters是定义计算属性,和computed类似,actions定义方法,和methods类似,所以上面的例子也可换种写法:

TypeScript 复制代码
export const useTemplate = defineStore('useTemplate',() =>{
    const count = ref(0)
    const doubleCount = computed(() => count1.value * 2)
    const threeCount = computed(() => count1.value * 3)
    function addCount(){
        count1.value ++
    }
    const minusCount = () =>{
        count1.value --
    }
    return {count,doubleCount,threeCount,addCount,minusCount}
})

四、使用

import { useTemplate} from '@/stores/useStores'

TypeScript 复制代码
import { useTemplate,useTemplate2 } from '@/stores/useStores'

const store = useTemplate()

//修改属性值
//方法1
store.count += 1
//方法2
store.addCount()
//方法3,重置属性值
store.$reset()

以上就是pinia的简单使用方法,更多复杂的,比如在actions中调用接口,万变不离其宗,都可以根据这种简单的例子来实现

相关推荐
蜗牛攻城狮19 分钟前
微前端四大方案选型对比与最佳实践:qiankun、micro-app、wujie、Module Federation
前端·微前端·qiankun·前端架构·micro-app·wujie
她说可以呀2 小时前
Vue插槽
前端·javascript·vue.js
qq_448011162 小时前
Vue + Jinja2两套模版与法冲突造成undefinedError
前端·javascript·vue.js
aixingpan2 小时前
aixingpan.cn API开发文档:前端查询夏令时和时区接口指南
前端·php
2601_958352903 小时前
23.5×19mm 换掉一整条音频链?|A-68 集成了什么:ADC / DAC / 24.576MHz 时钟 / AEC / 波束降噪,主控仅需 6 根线
前端·音视频·ai降噪·回声消除·语音模块
志尊宝3 小时前
AI原生前端开发(039):AI辅助的Nuxt 4全栈开发
前端·vue.js·ai-native
FRing034 小时前
JavaScript入门到精通三十二(深拷贝、浅拷贝、递归函数)
开发语言·前端·javascript
excel4 小时前
双 Token 与前端使用 Crypto 公私钥鉴权换 Token,哪种方案更好?
前端·后端
外收内放4 小时前
Python基础语法练习题(73)
java·前端·python
风骏时光牛马5 小时前
面向复杂场景的大模型应用落地与能力优化实践
前端