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

VUE状态持久化,储存动态路由

1. vuex

persistPlugin.js 文件

const routerKey = "ROUTER_KEY";export default (store) => {// 刷新页面时,存储改变的数据window.addEventListener("beforeunload", () => {localStorage.setItem(routerKey, JSON.stringify(store.state.router.routers));});// 将存储的数据取出,存到全局的状态管理里面try {const localState = localStorage.getItem(routerKey);if (localState) {store.dispatch("router/setRouters", JSON.parse(localState));store.state.router;}} catch (error) {console.log("本地存储数据异常");}
};

modules/router.js文件

const state = {routers: [],
}const mutations = {SET_ROUTERS(state, menuData) {state.routers = menuData},
}const actions = {setRouters({ commit }, menuData) {commit('SET_ROUTERS', menuData)},
}export default {namespaced: true,state,mutations,actions
}

store/index.js

import Vue from "vue";
import Vuex from "vuex";
import router from "./modules/router";
import getters from "./getters";
//数据持久化
import persistPlugin from "./persistPlugin.js";Vue.use(Vuex);const store = new Vuex.Store({modules: {router,},getters,state: {},mutations: {},actions: {},plugins: [persistPlugin],
});export default store;

** 2. pinia **

persistPlugin.js 文件

import { useRouterStore} from '@/stores/routerStoreControl';
import { storeToRefs } from 'pinia';const routerStore = useRouterStore();
const { routers } = storeToRefs(routerStore);
const routerKey= "ROUTER_KEY";export default (context) => {const { store } = context;const key = store.$id;// 判断存储的数据是否为路由if(key == 'router'){// 刷新页面时,存储改变的数据window.addEventListener("beforeunload", () => {localStorage.setItem(routerKey, JSON.stringify(store.$state.routers));});// 将存储的数据取出,存到全局的状态管理里面try {const localState = localStorage.getItem(routerKey);if (localState) {routers.value = JSON.parse(localState);}} catch (error) {console.log("本地存储数据异常");}}
};

routerStoreControl.js

import { defineStore } from 'pinia';
import { ref } from 'vue';export const useRouterStore = defineStore('router', () => { const routers = ref([]);return { routers };
});

main.js

import { createApp } from 'vue'
import App from './App.vue'
import { createPinia } from 'pinia';
//数据持久化
import persistPlugin from "./persistPlugin.js";const pinia = createPinia();
pinia.use(persistPlugin);const app = createApp(App);
app.use(pinia);
app.mount('#app');
http://www.lryc.cn/news/183011.html

相关文章:

  • 微信小程序代驾系统源码(含未编译前端,二开无忧) v2.5
  • 1797_GNU pdf阅读器evince
  • 网络-跨域解决
  • git提交代码的流程
  • 【SpringBoot】配置文件详解
  • 一文讲懂-五险一金
  • 判断三条边是否构成三角形(Python实现)
  • The directory ‘*‘ or its parent directory is not owned by the current user
  • leetcode做题笔记162. 寻找峰值
  • nginx负载转发源请求http/https:X-Forwarded-Proto及nginx中的转发报头
  • Docker compose插件安装
  • 【数据结构与算法】树、二叉树的概念及结构(详解)
  • 函数指针数组指针(指向函数指针数组的指针)
  • 经典算法-----汉诺塔问题
  • 博客之站项目测试报告
  • k8s晋级之管理容器的计算资源
  • 计算机竞赛 深度学习火车票识别系统
  • 盒子阴影和网页布局
  • Ph.D,一个Permanent head Damage的群体
  • visual studio禁用qt-vsaddin插件更新
  • Docker通过Dockerfile创建Redis、Nginx--详细过程
  • 关于使用 uniapp Vue3 开发分享页面 语法糖 setup 开发获取ref踩坑
  • Springboot+vue的时间管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。
  • 企业如何实时监管员工聊天转账行为
  • 2.2.3.1vim + ctags + cscope + taglist
  • JAVA面经整理(4)
  • Python3数据科学包系列(一):数据分析实战
  • 【LittleXi】【MIT6.S081-2020Fall】Lab: locks
  • 图像压缩:Transformer-based Image Compression with Variable Image Quality Objectives
  • C++ 类和对象篇(四) 构造函数