vuex管理状态 刷新页面保持不被清空的解决方案

mutation文件

import {
 RECEIVE_PUBLICHTIT
} from './mutation-types'
 
//保证刷新页面数据不消失*
function storeLocalStore (state) {
 window.localStorage.setItem("publicTit",JSON.stringify(state));
}
 
export default {
 [RECEIVE_PUBLICHTIT] (state,{title}){
  state.publicTit = title
  storeLocalStore(state)
 }
}

用到publicTit属性的组件

created(){
     localStorage.getItem("publicTit")&&
this.$store.replaceState(JSON.parse(localStorage.getItem("publicTit")))
   },

在created()生命周期中进行取值操作,这时需要判断第一次加载项目的时,localStorage没有publicTit的信息,所以先判断一下

实现思路 让vuex中publicTit的状态和localStorage中保持一致(从localStorage中取值)

优化版:

需要调用属性的组件

created(){
    //在页面加载时读取localStorage状态 复制对象是解决新vuex管理的状态中新添加的字段也可以存入localStorage中
    localStorage.getItem("publicTit") && this.$store.replaceState(Object.assign(this.$store.state,JSON.parse(localStorage.getItem("publicTit"))));
 
    //在页面刷新时将vuex里的信息保存到localStorage里,避免多次调用localStorage进行存储降低性能,beforeunload是在页面刷新之前调用
    window.addEventListener("beforeunload",()=>{
     localStorage.setItem("publicTit",JSON.stringify(this.$store.state))
    })
   }

以上这篇vuex管理状态 刷新页面保持不被清空的解决方案就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

相关推荐:

如何安全清空 S3 存储桶中指定前缀下的所有对象(而非误删“文件夹”)

S3本身没有真正的文件夹结构,所谓“文件夹”只是对象键名中的前缀;本文详解如何精准删除指定路径(如DailyLogs/2024-03-24/)下的全部对象,避免因前缀匹配过宽导致误删其他日期或层级的数据。 S3本身没有真正的文件夹结构,所谓“文件夹”只是对象键名中的前缀;本文详解如何精准删除指定路径...

如何在 Python 中彻底移除邮件中的附件(而非仅清空内容)

本文介绍使用email模块安全、彻底删除邮件中所有非内联附件的正确方法,避免残留空MIME部分导致客户端渲染异常(如Thunderbird/Gmail显示错乱),并通过set_payload()重构消息结构实现真正移除。 本文介绍使用`email`模块安全、彻底删除邮件中所有非内联附件的正确方法,避...

如何安全清空 S3 存储桶中指定前缀下的所有对象(而非误删整个“文件夹”)

s3本身没有真正的文件夹结构,所有对象均由键(key)唯一标识;所谓“删除文件夹”实为误删了以该路径为前缀的所有对象——本文详解如何精准清除指定日期/目录前缀下的内容,避免因前缀范围过大导致意外数据丢失。 s3本身没有真正的文件夹结构,所有对象均由键(key)唯一标识;所谓“删除文件夹”实为误删了以...

怎样用Python清空一个已存在的文件内容_使用w模式重新打开

w模式会直接清空文件内容:若文件存在则立即截断为0字节,不存在则创建新文件,无需额外操作。 用open()以"w"模式打开文件会直接清空内容 只要文件存在且有写权限,open("path/to/file.txt","w")一执行,原文件内容就立即被截断为0字节——不需要先truncate(),也不需...

如何解决 MySQL 轮询中无法获取新数据的问题

python使用mysql-connector-python轮询mysql时,首次查询能返回结果,后续却始终为空——根本原因在于游标未显式获取数据且连接复用导致事务隔离或结果集缓存问题,需正确管理游标生命周期与连接状态。 python使用mysql-connector-python轮询mysql时,...

Python中如何清空列表的所有元素_对比clear方法与重新赋值区别

clear()清空列表元素但不改变对象地址,所有引用同步变空;而my_list=[]是创建新对象并重绑定变量,原列表若被其他变量引用仍存在。 clear()方法到底做了什么 clear()是列表对象的原地方法,它直接清空当前列表的内部元素,不改变列表对象本身的内存地址。这意味着所有指向该列表的变量都...

Python怎么清空文件内容_truncate()方法与w模式覆盖

必须以'r+'或'w'模式打开文件才能用truncate()清空:'r+'需先seek(0)再truncate(0),'w'打开即清空但丢失元信息;truncate()是系统级截断操作,'w'是Python打开行为,二者触发时机与控制粒度不同。 用truncate()清空文件前必须先打开为可写模式 ...