vuex中数据持久化插件vuex-persistedstate使用详解

 更新时间:2022年03月30日 10:08:18   作者:JackieDYH  
这篇文章主要介绍了vuex中数据持久化插件vuex-persistedstate使用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

数据持久化vuex-persistedstate使用

vuex是在中大型项目中必不可少的状态管理组件,刷新会重新更新状态,但是有时候我们并不希望如此。例如全局相关的,如登录状态、token、以及一些不常更新的状态等,我们更希望能够固化到本地,减少无用的接口访问,以及更佳的用户体验。

安装起步

npm i vuex-persistedstate --save

目前的环境版本:

"vue": "^2.5.2",
"vue-router": "^3.0.1",
"vuex": "^3.4.0",
"vuex-persistedstate": "^3.0.1",

vuex已经升级到了3,看了release note没有发现太过分的升级,预计不会出现不兼容的情况,有感兴趣的小伙伴可以升级体验一下。

配置使用

在vuex初始化时候,作为组件引入。

import persistedState from 'vuex-persistedstate'
export default new Vuex.Store({
    // ...
    plugins: [persistedState()]
})

自定义存储方式

vuex-persistedstate默认使用localStorage来固化数据,一些特殊情况要如何应对呢?(如:safari的无痕浏览模式)

需要使用sessionStorage的情况

plugins: [
    persistedState({ storage: window.sessionStorage })
]

使用cookie的情况

import persistedState from 'vuex-persistedstate'
import * as Cookies from 'js-cookie'
export default new Vuex.Store({
  // ...
  plugins: [
    persistedState({
      storage: {
        getItem: key => Cookies.get(key),
        setItem: (key, value) => Cookies.set(key, value, { expires: 7 }),
        removeItem: key => Cookies.remove(key)
      }
    })
  ]
})

想使用cookie同理

默认持久化所有state

指定需要持久化的state,配置如下

import createPersistedState from "vuex-persistedstate"
const store = new Vuex.Store({
  // ...
  plugins: [createPersistedState({
      storage: window.sessionStorage,
      reducer(val) {
          return {
          // 只储存state中的assessmentData
          assessmentData: val.assessmentData
        }
     }
  })]

vuex引用多个插件的写法

譬如:vuex提示的插件和持久化的插件一起使用,配置如下

import createPersistedState from "vuex-persistedstate"
import createLogger from 'vuex/dist/logger'
// 判断环境 vuex提示生产环境中不使用
const debug = process.env.NODE_ENV !== 'production'
const createPersisted = createPersistedState({
  storage: window.sessionStorage
})
export default new Vuex.Store({
 // ...
  plugins: debug ? [createLogger(), createPersisted] : [createPersisted]
})

plugins要是一个一维数组不然会解析错误

使用vuex-persistedstate插件遇到的问题

这是一个做持久化的插件:vuex-persistedstate

 我在做项目时,遇到一个问题,就是做下面这个功能,渲染数据的时候,因为这个数据好多个地方使用,所以呢,把它存到了vuex里面。vuex 是将数据存到了浏览器的内存中,刷新就没了

这行代码是写在vuex里面的,就是说,我直接从本地去拿数据

list: JSON.parse(window.localStorage.getItem('abc')).category.list || []

直接看下代码: 我一开始是这样想的,既然我vuex中有数据了,不用计算属性行不行,直接渲染,确实可以渲染,但是品牌这一项咋渲染呢,push行不通啊,那就只能把结构写死,但是页面效果就不对了,所以这个地方用计算属性,第一,动态的取到前两项,第二,可以动态的添加新的 li 结构。

计算属性使用的场景:有数据啦,但不是我想要的格式,要加工加工

 setup () {
    const brand = reactive({
      id: 'brand',
      name: '品牌',
      children: [{ id: 'brand-children', name: '品牌推荐' }]
    })
    const store = useStore()
    const cateList = computed(() => {
      const list = store.state.category.list.map(item => {
        return {
          id: item.id,
          name: item.name,
          children: item.children && item.children.slice(0, 2)
        }
      })
      list.push(brand)
      return list
    })
    return { cateList }
  }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 浅谈Vue3 defineComponent有什么作用

    浅谈Vue3 defineComponent有什么作用

    本文主要介绍了Vue3 defineComponent作用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • vue2.0自定义指令示例代码详解

    vue2.0自定义指令示例代码详解

    指令通常以"v-"作为前缀, 以方便Vue知道你在使用一种特殊的标记。这篇文章主要介绍了vue2.0自定义指令的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • vue模仿网易云音乐的单页面应用

    vue模仿网易云音乐的单页面应用

    这篇文章主要介绍了vue仿网易云音乐的单页面应用实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • Vue中slot的使用详解

    Vue中slot的使用详解

    这篇文章主要介绍了Vue中slot的使用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • vue指令 v-bind的使用和注意需要注意的点

    vue指令 v-bind的使用和注意需要注意的点

    这篇文章主要给大家分享了 v-bind的使用和注意需要注意的点,下面文章围绕 v-bind指令的相关资料展开内容且附上详细代码 需要的小伙伴可以参考一下,希望对大家有所帮助
    2021-11-11
  • vuex-persist 使用场景分析

    vuex-persist 使用场景分析

    Vuex-Persist 是一个用于在 Vuex 中实现持久化状态的库,它可以用来解决应用程序在刷新浏览器或关闭页面后丢失 Vuex store 中状态的问题,本文给大家介绍vuex-persist 可以用来干什么,感兴趣的朋友一起看看吧
    2023-11-11
  • 使用vite构建vue3项目的方法步骤

    使用vite构建vue3项目的方法步骤

    本文主要介绍了使用vite构建vue3项目的方法步骤,vite支持性肯定比传统的打包工具好,下面我们就来介绍一下使用vite构建vue3项目,感兴趣的可以参考一下
    2023-05-05
  • 关于找到任意组件实例的方法

    关于找到任意组件实例的方法

    这篇文章主要介绍了关于找到任意组件实例的方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue中选项卡点击切换且能滑动切换功能的实现代码

    vue中选项卡点击切换且能滑动切换功能的实现代码

    本文通过实例代码给大家介绍了vue中选项卡点击切换且能滑动切换功能,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下
    2018-11-11
  • Vue 中 a标签上href无法跳转的解决方式

    Vue 中 a标签上href无法跳转的解决方式

    今天小编大家分享一篇Vue 中 a标签上href无法跳转的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11

最新评论