Pinia的使用

一、创建 Pinia 并暴露

import { createPinia } from 'pinia'; // 引入 pinia

import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'; // 持久化存储

const pinia = createPinia();

pinia.use(piniaPluginPersistedstate); 

export default pinia;

二、vue3 中的 main.js 引入 Pinia

import { createApp } from 'vue';

const app = createApp(App);

app.use(pinia);

app.mount('#app');

三、创建 Pinia的 模块仓库

import { defineStore } from 'pinia';
export const userStore = defineStore('login', {
	persist: true, // 开启数据持久化
	state: () => ({  count: 0 }),
	getters: {
		getCount: (state) => state.count,
	},
	actions: {
		add(){
            this.count++
        }
	},
});

四、在组件中使用 Pinia的数据

1、同步

<script setup>
import { userStore } from './store/user'; // 引入模块

const store = userStore();

console.log('store.count------->', store.count); // 获取模块中的数据

store.count++; // 直接修改数据

console.log('store.count------->', store.count);
</script>

2、异步

// vue组件
<script setup>
import { userStore } from '@/store/user';
const { ref } = require('@vue/reactivity');
const mobile = ref('13800000002');
const password = ref('123456');

const store = userStore();// 使用pinia状态集中管理仓库

const handlerLogin = async () => {
	await store.userLogin({ mobile: mobile.value, password: password.value });
};
</script>

/*-------------------------------------------------------------------------------*/

// pinia模块

import user from '@/api/user';
import { defineStore } from 'pinia';
export const userStore = defineStore('login', {
	persist: true, // 开启数据持久化
	state: () => ({ token: '', count: 0 }),
	getters: {
		getToken: (state) => state.token,
	},
	actions: {
		async userLogin(userInfo) {
			const { data } = await user.login(userInfo);
			this.token = data && data.data;
		},
	},
});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值