Vue3学习-Pinia 集中式状态管理工具

安装 Pinia

js 复制代码
npm i pinia

Pinia 集中式状态管理工具官网 传送门

引入 Pinia

js 复制代码
//引入
import { createPinia } from 'pinia'
const pinia = createPinia()
const app = createApp(App);
app.use(pinia);

使用

js 复制代码
// store 注册
import { defineStore } from "pinia";
export const useAStore = defineStore('a',{
    state(){
        return { a:1 }
    },
    getters: {
	   doubleCount: (state) => state.a * 2,
	},
	actions: {
	    increment(val) {
	      this.a = val
	    },
	},
})
// 组件获取
import { useAStore,storeToRefs } from '@/store/a'
const aStore = useAStore()
// 监听aStore 变化
aStore.$subscribe((mutate,state) => {
	console.log(mutate); // 行为
	console.log(state); // 改变后数据
});
let { a } = storeToRefs(aStore ) //store响应式数据,用于修改实时改变的值
console.log(aStore)
//修改
aStore.a += 1; // 单个
aStore.$patch({ // 批量
	a:2
});
aStore.increment(3)
// 获取getter
aStore.doubleCount()

组合式使用

js 复制代码
import { reactive, ref } from "vue";
import { defineStore } from "pinia";
export const useAStore = defineStore('a',{
    let a = ref('1')
    async function addAFun(){
    	a++
    }
    return { a,addAFun }
})
相关推荐
汤米粥2 天前
Pinia只能存储简单数据类型
pinia
SuperHeroWu711 天前
【HarmonyOS】深入理解@Observed装饰器和@ObjectLink装饰器:嵌套类对象属性变化
华为·harmonyos·状态管理·observed·objectlink·嵌套对象
天涯学馆11 天前
Svelte Store与Vuex:轻量级状态管理对比
前端·vue·vuex·svelte
天使day19 天前
Vuex全局状态管理1
vue·vuex
我码玄黄22 天前
高效Flutter应用开发:GetX状态管理实战技巧
前端·flutter·状态管理
儒雅的烤地瓜1 个月前
Vue | 简单说说 Vuex 实现响应式的原理
javascript·vue.js·vuex·响应式系统·vue响应式原理
Amd7941 个月前
使用 reloadNuxtApp 强制刷新 Nuxt 应用
状态管理·nuxt3·强制刷新·组件交互·缓存控制·路径导航·页面重载
威哥爱编程1 个月前
Vue状态管理库Pinia详解
javascript·vue·pinia
bjzhang752 个月前
Vue快速入门(六)——Vue3 状态管理 - Pinia(一)
前端·javascript·vue.js·pinia
疾风终究没有归途2 个月前
掌握原型模式:实现高效对象复制与状态管理的艺术
设计模式·原型模式·状态管理·对象复制·资源优化