提供跨组件和页面的共享状态能力,作为Vuex的替代品,专为Vue3设计的状态管理库。
官方文档 :https://pinia.vuejs.org/zh/getting-started.html
使用Pinia对用户的登录信息进行保存
npm install pinia
import { createApp } from 'vue' import App from './App.vue' import { createPinia } from 'pinia' const app =createApp(App) app.use(createPinia()) app.mount('#app')
目录结构:src/store/user.js
import {defineStore} from 'pinia' import {reactive, ref} from "vue"; //导入pinia //user表示模块名 export const useUser =defineStore('user',()=>{ //定义数据(state)d const userId=ref(6699) //用户ID const level =ref(10) //等级 const userMsg=reactive({ token:'addadgsadadadada', phone:'13111111111', age:13 }) //用户信息 const list =ref([]) //操作数据的函数(action 同步+异步) const updateUser=(newUserId)=>{ userId.value=newUserId } //修改账号信息 //数据返回出去 注:对象的形式 return{ userId, updateUser, userMsg } })
用户ID{{userStore.userId}}
用户信息{{userStore.userMsg}}
读取成功
Store
// src/store/user.js const getList=async ()=>{ const res =await axios.get('https://tools.mgtv100.com/external/v1/bank_names').then(r=>{ list.value=r.data.data }) }
组件
{{item.bank_name}}
onMounted(()=>{ getList() }) function getList(){ userStore.getList() }
计算后等级: {{userStore.cmpLevel}}
src/store/user.js
//getter const cmpLevel=computed(()=>{ return level.value*2 //该函数用来计算等级 }) return {cmpLevel} // src/store/user.js
下一篇:3 Go语言的变量声明