nuxt实现vuex持久化

devtools/2024/9/20 7:18:37/ 标签: 前端, javascript, vue.js, vue

前言:

此处不借助插件实现 store 本地持久化

所有状态持久化

使用 vuex 里面的 replaceState 方法还原 store 的根状态

API 参考 | Vuex

创建 store-cache.js 文件

在 plugins 目录下创建 store-cache.js 文件;

store-cache.js

javascript">export default (ctx) => {window.addEventListener('beforeunload', () => {sessionStorage.setItem('storeCache', JSON.stringify(ctx.store.state))})let storeCache = sessionStorage.getItem('storeCache')if (storeCache) {ctx.store.replaceState(JSON.parse(storeCache))sessionStorage.clear()}
}

配置 nuxt.config.js

在 nuxt.config 里面的 plugins 配置,添加 store-cache.js;

里面的 ssr 代表是否在服务端运行,因为上面代码使用的 sessionStorage 是客户端方法,所以设置为 false

javascript">export default {// ...plugins: ['@/plugins/element-ui.js', { src: '~/plugins/store-cache.js', ssr: false }],// ...
}

重启 nuxt 后,刷新页面 store 就不会丢失了

仅持久化某个状态

修改上面的 store-cache.js 文件即可

store-cache.js

javascript">export default (ctx) => {window.addEventListener('beforeunload', () => {sessionStorage.setItem('storeCache', JSON.stringify(ctx.store.state.products.active_index))})let storeCache = sessionStorage.getItem('storeCache')if (storeCache) {ctx.store.commit('products/activeIndex', JSON.parse(storeCache))sessionStorage.clear()}
}

流程:

1、先把 store 里面的 products.active_index 状态存到 sessionStorage ;

2、获取 sessionStorage ;

3、调用 store 里面的 products/activeIndex 方法,重新赋值;

store/products.js

javascript">export default {state: () => ({active_index: 0,}),mutations: {activeIndex(state, val) {state.active_index = val;},},
};


http://www.ppmy.cn/devtools/56226.html

相关文章

shell编程实战

1.1 shell脚本编程的步骤 需求分析:确定功能 命令测试:确定脚本需要的关键命令 编辑脚本 测试脚本 1.2 操作 1.2.1 实验一 1.需求描述 (1)统计网络中的服务器的mac 注:ARP,地址解析协议 注: (2)检查哪些主机开…

Ubuntu开机后图像化界面消失只有命令行界面

ubuntu重新安装cpp库时突然黑屏,打开之后,只能手动输入用户名和密码才能登陆,当时最坏的结果就是重新安装系统,但是还是得抢救一下,万幸的是抢救成功了!!! 于是来到第一个博客 参考…

收银系统源码-千呼新零售【分销商城】

千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

【cf】Edu Codeforces Round 167(Div.2)题解 A - E

文章目录 A. Catch the CoinB. Substring and Subsequence(贪心)C. Two Movies(贪心)D. Smithing Skill(贪心双指针)E. Distance to Different(dp) A. Catch the Coin y 小于 -1 就…

Talking Web

1. curl 1.1 http curl http://127.0.0.1:80 向目标主机端口发送http请求 1.2 httphead curl -H “Host: 18ed3df584cd48328b5839443aa7b42b” http://127.0.0.1:80 1.3 httppath curl http://127.0.0.1:80/853c64cd218f80d0a59665666fb2ab80 1.4 URL编码路径 &#xff0…

光学相机市场格局:中国光学相机市场评估及未来发展趋势研究报告

欢迎关注GZH《光场视觉》 光学相机行业定义 光学相机是一种利用光学镜头和感光材料(如胶片)或数字传感器来捕捉图像的装置。光学相机,也常被称作传统相机或胶片相机,其工作原理基于光的折射和聚焦。当光线通过相机的镜头进入时&…

从我邮毕业啦!!!

引言 时间过的好快,转眼间就要从北邮毕业了,距离上一次月度总结又过去了两个月,故作本次总结。 PS: https://github.com/WeiXiao-Hyy/blog整理了后端开发的知识网络,欢迎Star! 毕业🎓 6月1号完成了自己的…

# Kafka_深入探秘者(1):初识 kafka

Kafka_深入探秘者(1):初识 kafka 一、kafka 特性 1、Kafka :最初是由 Linkedln 公司采用 Scala 语言开发的一个多分区、多副本并且基于 ZooKeeper 协调的分布式消息系统,现在已经捐献给了 Apache 基金会。目前 Kafka…

【websocket】websocket网课视频记录

仅个人方便回顾。 【WebSocket入门与案例实战-哔哩哔哩】 https://b23.tv/2p1f9t2 课程对应代码仓库: https://gitee.com/duoli-java/websocket-demo.git

[图解]企业应用架构模式2024新译本讲解18-活动记录2

1 00:00:00,940 --> 00:00:04,890 接下来,就是要把这个列表输出到控制台 2 00:00:06,490 --> 00:00:12,280 这里面有3个 3 00:00:15,420 --> 00:00:17,480 Id有了,姓 4 00:00:18,600 --> 00:00:28,500 一个一个取,ID&#xff…

Python 实现Excel转TXT,或TXT文本导入Excel

Excel是一种具有强大的数据处理和图表制作功能的电子表格文件,而TXT则是一种简单通用、易于编辑的纯文本文件。将Excel转换为TXT可以帮助我们将复杂的数据表格以文本的形式保存,方便其他程序读取和处理。而将TXT转换为Excel则可以将文本文件中的数据导入…

不是KVM不支持精简置备的磁盘,而是VMM

正文共:999 字 11 图,预估阅读时间:1 分钟 书接上文(不会吧!KVM竟然不支持磁盘的精简置备!?),我们已经掌握了通过“虚拟系统管理器VMM”创建虚拟机的基本方法&#xff0c…

Kafka Stream 流处理设计概述

Kafka Stream 流处理设计概述 Kafka 流处理是指使用 Kafka 及其生态系统中的组件来处理实时数据流。Kafka Streams 是 Kafka 官方 提供的流处理库,它简化了构建流处理应用程序的过程,并与 Kafka 无缝集成。以下是 Kafka 流处理的设 计原理和相关概念。 1. Kafka 流处理基本…

基于matlab的不同边缘检测算子的边缘检测

1 原理 1.1 边缘检测概述 边缘检测是图像处理和计算机视觉中的基本问题,其目的在于标识数字图像中亮度变化明显的点。这些变化通常反映了图像属性的重要事件和变化,如深度不连续、表面方向不连续、物质属性变化和场景照明变化等。边缘检测在特征提取中…

计算机毕业设计Python+Spark知识图谱微博预警系统 微博推荐系统 微博可视化 微博数据分析 微博大数据 微博爬虫 微博预测系统 大数据毕业设计

课题名称 基于Bert模型对微博的言论情感分析设计与实现 课题来源 课题类型 BY 指导教师 学生姓名 专 业 计算机科学与技术 学 号 开题报告内容:(调研资料的准备,设计/论文的目的、要求、思路与预期成果;…

【uniapp】上传附件+Java后端

一、背景 移动端项目使用uniapp开发,项目有上传附件的需求。现在分享给大家,一起进步 二、前端 关键代码: uni.chooseFile({type: "all",count: this.count,success: res > {let len 0;res.tempFiles.forEach((item, index…

endswith()方法——是否以指定子字符串结尾

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 endswith()方法用于检索字符串是否以指定子字符串结尾。如果是则返回True,否则返回False。endswith()方法的语法格式如下&…

提升 Selenium 测试稳定性的秘诀:深入理解等待 API 的使用

目录 为什么需要等待Selenium 等待 API 简介隐式等待显式等待Fluent Wait等待策略的选择示例代码总结 正文 1. 为什么需要等待 在 Web 自动化测试中,等待是一个关键因素。网络应用通常是动态的,页面加载时间、元素的显示时间都可能不同步。直接操作这…

DataV大屏组件库

DataV官方文档 DataV组件库基于Vue (React版 (opens new window)) ,主要用于构建大屏(全屏)数据展示页面即数据可视化,具有多种类型组件可供使用: 源码下载

Matlab中数组详解

在MATLAB中,数组是最基本的数据类型,几乎所有的数据运算都涉及数组操作。下面是对MATLAB中数组的详细解释和操作示例: 数组的创建 一维数组(向量): 行向量:用方括号 [ ] 包含元素,元…