安装Pinia依赖
pnpm install pinia
挂载pinia
import { createApp } from 'vue'; import './style.css'; import router from './router'; // 引用Pinia import { createPinia } from 'pinia'; import App from './App.vue'; // 创建Pinia const pinia = createPinia(); const app = createApp(App); app.use(router); // 挂载Pinia app.use(pinia); app.mount('#app');
使用pinia配置数据
创建/src/store文件夹,在store文件夹下创建各种store,如下test.ts
import { defineStore } from 'pinia';
export const useTestStore = defineStore('test', {
// state属性
state: () => {
return {
name: '杨xx',
sex: '男',
};
},
// getters
getters: {
getNameData: (state) => {
return '获取到的名字' + state.name;
},
},
// actions
actions: {
saveNameData(name: string) {
this.name = name;
},
},
});
调用示例
<template>
<!-- getter 调用 -->
<div>{{ testStore.getNameData }}</div>
<div>{{ sex }}</div>
<button @click="changeName">change</button>
<button @click="reset">reset</button>
<button @click="action">action</button>
</template>
<script setup lang="ts">
import { useTestStore } from '../store/test';
import { storeToRefs } from 'pinia';
// 使用store
const testStore = useTestStore();
let { name, sex } = storeToRefs(testStore);
// 修改数据
const changeName = () => {
name.value = '唐**';
};
// 重置回初始数据
const reset = () => {
testStore.$reset();
};
// 调用action
const action = () => {
testStore.saveNameData('陈某');
};
</script>
<style scoped lang="postcss"></style>