文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

vuex中数据持久化插件vuex-persistedstate怎么用

2023-06-29 18:00

关注

小编给大家分享一下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-persistedstate怎么用

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

vuex中数据持久化插件vuex-persistedstate怎么用

vuex中数据持久化插件vuex-persistedstate怎么用

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

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

vuex中数据持久化插件vuex-persistedstate怎么用

直接看下代码: 我一开始是这样想的,既然我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 }  }

以上是“vuex中数据持久化插件vuex-persistedstate怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯