vuex-7-persist-持久化存储

简介: 1.持久化存储一直都是开发过程中经常遇到的场景2.这个自己写下逻辑,其实在react-persist中写过3.大体的原理就是把存储vuex里面的状态可以存储到 localstorage一份,因为localstorage刷新后数据还是在的,比如token的存储

1.前言


1.持久化存储一直都是开发过程中经常遇到的场景

2.这个自己写下逻辑,其实在react-persist中写过

3.大体的原理就是把存储vuex里面的状态可以存储到 localstorage一份,因为localstorage刷新后数据还是在的,比如token的存储


2.  自己写 -持久化核心代码


新建文件 persist.js

不清楚具体流程的可以加入打印步骤 或者断点跟踪

1.判断是否支持localstorage

2.读取localstorage的值 ,判断是否存储过

3.存储过就更新

4.全局监听subscribe ,这个是API

5.业务逻辑比较简单话,可以一股脑全存进去

6.store文件 作为插件配置


export default store => {
    // 将存储在localStorage里面的状态还原
    if (localStorage) {
        // 反序列化
        const user = JSON.parse(localStorage.getItem("user"))
        console.log("1-1-1-1",user);
        //有值更新
        if (user) {
            // 存储进去
            store.commit("user/userInfoMutation", user)
        }
    }
    // 如果用户相关的状态发生变化,就自动存入 localStorage
    store.subscribe((mutation, state) => {
          console.log("2-2-2-2");
            localStorage.setItem("user", user)
    })
}


3. 完整逻辑配置参考


store.subscribe((mutation, state) => {
        console.log("2-2-2-2");
        //type形式有可能是   user/userInfoMutation
        if (mutation.type ==="user/userInfoMutation") {
        console.log("3-3-3-3");
            //序列化
            const user = JSON.stringify(state.user)
            localStorage.setItem("user", user)
        }else if(mutation.type ==="user/logout"){
        console.log("序列化-else");
            localStorage.removeItem("user")
        }



4. store配置



import persist from '../plugins/persist'
export default new Vuex.Store({
  state,
  getters,
  mutations,
  actions,
  modules: {
    user
  },
  strict:true,
  plugins:[persist]
})



5.第三方库 persist的使用


说到持久化persist这个流行的依赖就离不开呀

1. 安装


npm install --save vuex-persist


yarn add vuex-persist


2. 引入

store文件


import VuexPersistence from 'vuex-persist'


3. 创建持久化对象


const vuexLocal = new VuexPersistence({
  storage: window.localStorage
})


4. store持久化配置


plugins:[vuexLocal.plugin]


搞定 以上就是 vuex的持久化存储,这样写默认会存储 vuex里的所有state

X{Q4M)$1]A6@J9@$}J~X)8F.png



6. 单独存储变量的 store配置


6.1 store

哪个需要存储到localstorage,就写哪个

注意这里这个persist 键就是存储到 localStorae里面的key

当然你可以随意起名字


plugins: [new VuexPersistence({
    reducer: state => ({
      persist: state.testPersisit //这个就是存入localStorage的值
    })
  }).plugin]


6.2 state

这个是拆分了单独的state


export default{
    testPersisit:{},
}


6.3 mutations


export default{
    // 持久化存储
    setTestPersisit (state, obj) {
        state.testPersisit = obj
    }
}



7. 组件内使用


7.1  import


import { mapState, mapMutations } from "vuex";


7.2  computed


//   映射 state里面 的状态
    ...mapState(["testPersisit"])


7.3 methods


methods: {
    ...mapMutations(["setTestPersisit"])
}


7.4 修改 访问

点击


this.setTestPersisit({ name: "测试" });
      console.log("store 持久化:", this.testPersisit);

XWW1I~23RW`6%AD{Q(Y95G0.png


O3BDGW(HJ[REROPM6WLS@LC.png




相关文章
|
8月前
|
存储
(pinia-plugin-persistedstate)pinia 持久化存储
(pinia-plugin-persistedstate)pinia 持久化存储
836 1
|
存储 前端开发
react-几步搞定redux-persist-持久化存储
其实在vuex-persist持久化,用的也是这个东西 这个东西 就是持久化,其实所谓的持久化,在前端而言,一般都是指存储到 localStorage里面,因为刷新也还在嘛,不像存在其他地方刷新就没了,这里不讨论存储到本地文件 我们在react再玩一遍,看看有啥不同,找点新鲜感
1125 0
react-几步搞定redux-persist-持久化存储
|
3月前
|
存储 搜索推荐 API
Electron-store本地存储功能
【10月更文挑战第18天】Electron-store 无疑为我们的 Electron 应用开发提供了强大的支持。它的本地存储功能不仅方便实用,而且性能优异,为我们打造高质量的应用提供了坚实的基础。
|
3月前
|
存储
Electron-store 存储数据的大小限制
【10月更文挑战第18天】虽然无法给出一个确切的数字来表示 Electron-store 的存储数据大小限制,但通过对相关因素的分析和理解,我们可以更好地管理和利用这一存储工具,为应用的稳定运行提供保障。同时,随着技术的不断发展和进步,未来可能会有更优化的存储解决方案出现,进一步拓展我们的存储能力和应用场景。
|
8月前
|
资源调度 JavaScript
Pinia的数据持久化
Pinia的数据持久化
|
4月前
|
数据安全/隐私保护
vuex数据持久化、加密(vuex-persistedstate、secure-ls)
本文介绍了如何在Vuex中使用`vuex-persistedstate`和`secure-ls`库进行数据的持久化和加密,确保在Vite打包上线后,Vuex中的数据安全。
137 1
|
5月前
|
存储 JavaScript 前端开发
Redux 中 Store 的意义是什么?
【8月更文挑战第30天】
69 0
|
6月前
|
小程序 API
6. 小程序端的 Pinia 持久化
6. 小程序端的 Pinia 持久化
110 0
|
8月前
|
JavaScript
vue中使用pinia及持久化
vue中使用pinia及持久化
73 0