【Vue】实现 vuex 状态持久化

Vuex是基于内存存储,存在内存里面的,刷新网页之后就没有了,不会持久化储存

一、手动存储

利用 localStorage 实现永久化存储

import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);
export default new Vuex.Store({
  state: {
  	isShow: false,
  },
  mutations:{
  	localIsShow(state, status) {
  	  // 改变state
      state.isShow= status;
      // 设置 Storage
      window.localStorage.isShow = JSON.stringify(isShow)
    },
    updateIsShow(state, status) {
  	  // 改变state
      state.isShow= status;
    },
  },
  actions: {
  	fetchIsShow({commit}){
  		let isShow = JSON.parse(window.localStorage.isShow);
  		commit('updateIsShow', isShow)
  	}
  },
});
  • App.vue
<template>
  <div>
    状态:{{ $store.state.isShow }}
    <button @click="()=>onClick(true)">显示</button>
    <button @click="()=>onClick(false)">不显示</button>
  </div>
</template>
<script>
export default {
	methods: {
		onClick(val){
			this.$store.commit('localIsShow', val)
		}
	},
	mounted(){
		// 初始化的时候获取原始数据
		this.$store.dispatch('fetchIsShow')
	}
}
</script>

二、使用插件

vuex-persistedstate插件:它会帮我们将store里面的state映射到了本地环境中。通过提交 mutation 改变的 state,会动态的去更新local里面对应的值。

npm install --save vuex-persistedstate
  • 配置插件:main.js
import Vue from "vue";
import Vuex from "vuex";
// 1. 导入包
import createPersistedState from "vuex-persistedstate";
Vue.use(Vuex);
export default new Vuex.Store({
  state,
  mutations,
  actions,

  // 配置为 vuex 的插件
  plugins: [
    // 持久化存储的state数据
    createPersistedState({
    	// 存储方式:localStorage、sessionStorage、cookies
    	storage: window.localStorage,
    	// 存储的 key 值
    	key: 'store',
    	render(state){
    		// 要存储的数据
    		return {...state};
    	}
    	
    })
  ],
});

相关推荐

  1. Vue实现 vuex 状态持久

    2024-03-11 21:16:02       21 阅读
  2. vuex实现持久存储

    2024-03-11 21:16:02       47 阅读
  3. vue3 vuex 4.x 持久

    2024-03-11 21:16:02       13 阅读
  4. Vuex如何做持久存储

    2024-03-11 21:16:02       30 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-11 21:16:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-11 21:16:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-11 21:16:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-11 21:16:02       18 阅读

热门阅读

  1. 景安空间不支持指定运行目录tp5

    2024-03-11 21:16:02       21 阅读
  2. 面试题 -- 内存管理

    2024-03-11 21:16:02       21 阅读
  3. Qt + mqtt对接阿里云平台(二)

    2024-03-11 21:16:02       23 阅读
  4. 2023 年 3 月青少年软编等考 C 语言一级真题解析

    2024-03-11 21:16:02       22 阅读
  5. Linux信号机制

    2024-03-11 21:16:02       19 阅读
  6. PLIP,openbabel安装避坑

    2024-03-11 21:16:02       30 阅读
  7. LLDB-调试

    2024-03-11 21:16:02       19 阅读
  8. leetcode周赛388(1-3)

    2024-03-11 21:16:02       22 阅读