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 }
})
相关推荐
你这个年龄怎么睡得着的1 个月前
自己实现一个简单版 Pinia
前端·vue.js·vuex
萌萌哒草头将军1 个月前
🚀🚀🚀尤雨溪:Vite 和 JavaScript 工具的未来
前端·vue.js·vuex
光影少年1 个月前
vue2为什么不能检查数组的的变化,改怎样解决
前端·vue.js·vuex
逝缘~2 个月前
小白学Pinia状态管理
前端·javascript·vue.js·vscode·es6·pinia
威威当爸了2 个月前
vue pinia 独立维护,仓库统一导出
vue.js·pinia
机构师2 个月前
<uniapp><vuex><状态管理>在uniapp中,如何使用vuex实现数据共享与传递?
uni-app·vue·vuex·数据管理
我是哈哈hh3 个月前
【vue】vuex实现组件间数据共享 & vuex模块化编码 & 网络请求
前端·javascript·vue.js·前端框架·网络请求·vuex·模块化
RAY_CHEN.3 个月前
pinia-plugin-persistedstate的使用
pinia
USER_A0013 个月前
【VUE3】练习项目——大事件后台管理
前端·vue.js·axios·pinia·elementplus·husky·vuerouter4
阿娟蛋4 个月前
Pinia vs Vuex深度探索:状态管理的进阶之道
前端·源码·vuex