• 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. })
  • 相关阅读:
    游戏类app有哪些变现方式?
    生成 eps 的四种方法(总有一款适合你)
    什么?你还不知道ERD Online要干什么
    阿里云轻量应用服务器如何快速搭建WordPress个人博客?
    红黑树概述
    [附源码]Python计算机毕业设计Django面向高校活动聚App
    JAVA计算机毕业设计实验室耗材管理系统源码+系统+mysql数据库+lw文档
    ELK:开源搜索与分析技术栈(1)
    OC-NSNumber和NSValue一般用来装箱拆箱
    c/c++实现网格最短路径问题
  • 原文地址:https://blog.csdn.net/m0_52704461/article/details/133916576