侧边栏壁纸
博主头像
ZHD的小窝博主等级

行动起来,活在当下

  • 累计撰写 79 篇文章
  • 累计创建 53 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录
VUE

Vuex Persistedstate 安装和使用

江南的风
2024-11-06 / 0 评论 / 0 点赞 / 37 阅读 / 4424 字 / 正在检测是否收录...

Vuex Persistedstate是一个用于在Vuex中持久化存储状态的插件,它可以将Vuex的状态保存到本地存储(如Local Storage、Session Storage或Cookie)中,以便在页面刷新后仍然可以保留状态。以下是Vuex Persistedstate的安装和使用步骤:

一、安装

使用npm或yarn安装Vuex Persistedstate插件。在命令行中执行以下命令:

npm install vuex-persistedstate --save  
# 或者  
yarn add vuex-persistedstate

二、使用

  1. 引入插件

    在Vuex的store配置文件中(通常是store/index.js),引入Vuex和Vuex Persistedstate插件。

    import Vue from 'vue';  
    import Vuex from 'vuex';  
    import createPersistedState from 'vuex-persistedstate';  
    
    Vue.use(Vuex);
  2. 配置插件

    在创建Vuex store时,将Vuex Persistedstate插件作为plugin传入,并配置相关选项。

    const store = new Vuex.Store({  
      // state, mutations, actions, getters等配置  
      plugins: [  
        createPersistedState({  
          // 配置项,可根据需要进行调整  
          key: 'my-app', // 存储在本地存储中的键名,默认为'vuex'  
          storage: window.localStorage, // 存储位置,默认为window.localStorage,也可以设置为window.sessionStorage或自定义存储方法  
          paths: ['user', 'cart'], // 指定需要持久化的state属性路径数组,默认为undefined,表示持久化整个state  
          // 其他可选配置项,如reducer、transformer、filter等  
        })  
      ]  
    });

    在上面的配置中,key选项用于指定存储在本地存储中的键名,storage选项用于指定存储位置,paths选项用于指定需要持久化的state属性路径数组。

  3. 使用插件

    配置完成后,Vuex Persistedstate插件将自动在Vuex store的状态发生变化时,将状态保存到配置的存储位置中。当页面刷新时,插件将自动从存储位置中读取状态,并将其恢复到Vuex store中。

三、高级用法

  1. 使用reducer函数

    如果只想持久化部分状态,可以使用reducer函数来筛选需要持久化的状态。

    const store = new Vuex.Store({  
      plugins: [  
        createPersistedState({  
          reducer(val) {  
            // 只持久化val中指定的属性  
            return {  
              user: val.user,  
              cart: val.cart  
            };  
          }  
        })  
      ]  
    });
  2. 自定义存储方法

    可以通过配置storage选项来使用自定义的存储方法,例如将数据存储在Cookie中。

    import * as Cookies from 'js-cookie';  
    
    const store = new Vuex.Store({  
      plugins: [  
        createPersistedState({  
          storage: {  
            getItem: (key) => Cookies.get(key),  
            setItem: (key, value) => Cookies.set(key, value, { expires: 3, secure: true }),  
            removeItem: (key) => Cookies.remove(key)  
          }  
        })  
      ]  
    });
  3. 数据加密

    为了数据安全,可以对持久化的数据进行加密。可以使用secure-ls等加密库来实现。

    import SecureLS from 'secure-ls';  
    
    const ls = new SecureLS({  
      isCompression: false,  
      encryptionSecret: 'your-encryption-secret' // 自定义密钥  
    });  
    
    const store = new Vuex.Store({  
      plugins: [  
        createPersistedState({  
          storage: {  
            getItem: (key) => ls.get(key),  
            setItem: (key, value) => ls.set(key, value),  
            removeItem: (key) => ls.remove(key)  
          }  
        })  
      ]  
    });

通过以上步骤,就可以成功地在Vuex中使用Vuex Persistedstate插件来实现状态的持久化存储。

0

评论区