当前位置: 首页 > news >正文

Vue3 Pinia

1、安装Pinia

npm install pinia
npm install pinia-plugin-persistedstate

2、在main.js中配

import { createApp } from 'vue'
import App from './App.vue'
//引入pinia状态机
import { createPinia } from "pinia";
import piniaPluginPersistedstate from "pinia-plugin-persistedstate"; //pinia持久化const app = createApp(App);
const pinia = createPinia();app.use(ElementPlus, { locale: zhCn })
//全局挂载状态机
app.use(pinia);
pinia.use(piniaPluginPersistedstate);
app.mount('#app')

3、在src下创建store文件夹创建demo.js(状态)文件

import { defineStore } from "pinia";//userStore:定义一个仓库对象,保存用户信息
//state:仓库数据
//getters:仓库计算属性
//actions:仓库方法//pinia使用
// import { userStore } from "@/store/modules/userStore.js";
// const user_store = userStore()
// console.log(user_store.user, "-----userStore.user--")
//监听pinia值的变化
// user_store.$subscribe((mutate, state) => {
//   console.log("里面的数据发生了变化", mutate, state)
// })export const userStore = defineStore("users", {state: () => {//用户信息return {user: null,};},getters: {isLoggedIn: (state) => !!state.user, //是否登录},actions: {//登录updateLogin(user) {this.user = user;},//退出登录(清除本地存储的操作是异步的,所以这里使用async/await,确保清除完本地存储后再跳转到登录页面)async logout() {this.user = null;//并清空本地储存localStorage和sessionStorageawait localStorage.clear(); // 清除本地存储await sessionStorage.clear(); // 清除会话存储},//修改用户信息user中信息的通用方法,其中updates是一个对象,填写需要修改的信息updateUser(updates) {if (this.user) {this.user = { ...this.user, ...updates }}},},//增加一个插件方法(pinia-plugin-persist),解决刷新页面数据丢失的问题,持久化数据(该插件默认会将所有数据存储到sessionStorage中,也可以自定义存储策略)persist: {enabled: true,               // 启用持久化storage: sessionStorage,       // 存储方式: localStorage 或 sessionStorage// paths: ['count'],            // 只持久化 count 状态key: 'custom-counter-store', // 自定义存储的 key}
});

4、pinia使用


//pinia使用import { userStore } from "@/store/demo.js";const user_store = userStore()//user_store.变量名     进行使用或修改值// 第二种修改方法,批量变更// user_store.$patch({//   sum:888,//   school:"scu",//   address:'成都'// })console.log(user_store.user, "-----userStore.user--")//监听pinia值的变化user_store.$subscribe((mutate, state) => {console.log("里面的数据发生了变化", mutate, state)})

      http://www.xdnf.cn/news/1100773.html

      相关文章:

    1. php中调用对象的方法可以使用array($object, ‘methodName‘)?
    2. DSPy:用编程思维驯服大模型的新范式
    3. 2025年主流数据库连接池推荐:从原理到场景的深度解析
    4. Java 大视界 -- Java 大数据在智能医疗远程手术机器人操作数据记录与分析中的应用(342)
    5. 传输层协议UDP原理
    6. 二分查找1
    7. JavaScript加强篇——第五章 DOM节点(加强)与BOM
    8. 企业培训笔记:Vue3前端框架配置
    9. 销售数据可视化分析项目
    10. 专题:2025云计算与AI技术研究趋势报告|附200+份报告PDF、原数据表汇总下载
    11. 如何选择数据可视化工具?从设计效率到图表表现力全解读
    12. Spring之我见-Spring循环依赖为啥是三级缓存?
    13. uniApp实战五:自定义组件实现便捷选择
    14. Hadoop 用户入门指南:驾驭大数据的力量
    15. 如何将文件从OPPO手机传输到电脑
    16. crmeb多门店对接拉卡拉支付小程序聚合收银台集成全流程详解
    17. UniApp 生命周期详解:从启动到销毁的完整指南
    18. WHQL认证失败怎么办?企业如何高效申请
    19. 前端开发—全栈开发
    20. Python中类静态方法:@classmethod/@staticmethod详解和实战示例
    21. Linux:多线程---同步生产者消费者模型
    22. 人事系统选型与应用全攻略:从痛点解决到效率跃升的实战指南
    23. 区块链应用场景深度解读:金融领域的革新与突破
    24. 资源分享-FPS, 矩阵, 骨骼, 绘制, 自瞄, U3D, UE4逆向辅助实战视频教程
    25. 将Blender、Three.js与Cesium集成构建物联网3D可视化系统
    26. 【SpringAI】6.向量检索(redis)
    27. javaweb之相关jar包和前端包下载。
    28. PHY模式,slave master怎么区分
    29. 7.11文件和异常
    30. 什么是进程、什么是线程(进程、线程的全方面解析)