• vue3后台管理系统之pinia及持久化集成使用


    安装依赖

    pnpm i pinia

    在src目录下创建store

    创建大仓库

    1. //仓库大仓库
    2. import { createPinia } from 'pinia'
    3. //创建大仓库
    4. const pinia = createPinia()
    5. //对外暴露:入口文件需要安装仓库
    6. export default pinia

    全局注册pinia

    配置用户仓库pinia管理数据

    1. // 创建用户仓库
    2. import { defineStore } from 'pinia'
    3. const useUserStore = defineStore('User', {
    4. // 小仓库存储数据
    5. state: () => {
    6. return {}
    7. },
    8. // 异步逻辑
    9. actions: {
    10. userLogin(data: any) {
    11. console.log(data)
    12. },
    13. },
    14. getters: {},
    15. })
    16. export default useUserStore

    新建 src/store/basic.js 文件

    1. import { defineStore } from 'pinia'
    2. //定义pinia名字useAppStore use->前缀 App-> 文件名 Store固定 defineStore('app') app->文件名
    3. export const uesBasicStore = defineStore('basic', {
    4. state: () => {
    5. return {
    6. name: 'test data',
    7. age:18,
    8. phone:13302254692
    9. }
    10. },
    11. actions: {
    12. setTest(data) {
    13. //批量修改state, 建议两个以上用这种方式修改
    14. this.$patch((state) => {
    15. state.name = data.name
    16. state.age = data.age
    17. state.phone = data.phone
    18. })
    19. //一个到两个用这种方式修改state
    20. this.name=data.name
    21. }
    22. }
    23. })

    this.$patch() 和 this.xxx形式修改state 本质上在性能上差别不大,根据自己的喜好,选择相应的方式就行

    在页面处修改

    通过storeToRefs可以动态监听和修改store里的元素

    pinia持久化

    我们知道当页面刷新后vuex保存的状态就不存在了,如果想要一直保存vuex的状态,那么就要将其转换为localstorage,那个插件pinia-plugin-persist就是借助localstorage存储vuex状态,实现刷新后保留之前的状态

    安装依赖

    pnpm add pinia-plugin-persistedstate@2.3.0 -S

    配置

    在main.js中引入持久化插件

    1. import { createPinia } from "pinia";
    2. import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
    3. pinia.use(piniaPluginPersistedstate);

    如何使用

    在store中

    1. import { defineStore } from 'pinia'
    2. export const useAppStore = defineStore('app', {
    3. state: () => {
    4. return {
    5. name: 'test data',
    6. age:18,
    7. phone:13302254694
    8. }
    9. },
    10. //persist:true //存储整个对象
    11. //pinia持久化
    12. persist: {
    13. storage: localStorage,//default localStorage
    14. //设置['phone'] -->只会将phone 这个key进行缓存
    15. paths: ['phone'],
    16. },
    17. })
  • 相关阅读:
    防止消息丢失与消息重复——Kafka可靠性分析及优化实践
    什么是元编程
    IntelliJ IDEA 下 JavaWeb 配置MySQL 连接
    springboot+mybatis实现一对多查询(某学生和课程的ER图如下图所示,根据ER图创建数据库表,往数据库表中添加若干测试数据,用SpringBoot+SpringMVC+ Mybatis)
    使用 Vue 3 时应避免的 10 个错误
    sort方法实现复杂排序
    人脸修复祛马赛克算法CodeFormer——C++与Python模型部署
    JVM中的堆和栈
    Impossible WHERE noticed after reading const tables
    【Flutter小记5】Isolate && ffi && Method Channel 使用简介与总结
  • 原文地址:https://blog.csdn.net/m0_52704461/article/details/133916576