误引用vuex-persistedstate导致用户信息无法清除问题及解决

 更新时间:2022年04月29日 11:51:49   作者:意井  
这篇文章主要介绍了误引用vuex-persistedstate导致用户信息无法清除问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vuex-persistedstate导致用户信息无法清除

问题

网站使用nuxt框架,使用js-cookie+vuex存储用户信息,在这一篇文章中关于nuxt使用vuex存储以及获取用户信息踩坑,我讲过nuxt是服务端和客户端渲染集成,所以服务端将user信息初始化为空,客户端无法再次初始化,即便客户端的cookie中能获取到用户信息,也无法给user赋值。

后来在网上搜索了半天解决办法,引入了vuex-persistedstate,但是引入之后并未使用,且并未及时删除,仍然使用cookie在客户端获取user信息,清除cookie中user信息,发现user信息仍然存在,经排查发现localStorage存储了一份user信息,逐步排查发现是因为调用了vuex-persistedstate将user信息和token存储在localStrorage,但是在退出登录时只清除了vuex中token,并未清除user信息,所以导致问题的出现。

解决办法

删除vuex-persistedstate或者在退出登录时清除vuex中user信息。

延伸

1、基于以上问题,研究了一下vuex-persistedstate,发现三点:存储位置:默认localStorage(永久存储本地,只能手动删除),可修改为sessionStorage(关闭浏览器即无);存储对象键:默认为vuex,可任意修改,存储对象:store。

nuxt中使用vuex-persistedstate,通过在nuxt.config.js中全局引入

localStorage.js

import createPersistedState from 'vuex-persistedstate'
 
export default ({ store }) => {
  window.onNuxtReady(() => {
    createPersistedState({ key: 'paida-vuex', storage: window.sessionStorage })(store)
  })
}

nuxt.config.js

 plugins: [
    {
      src: '~/plugins/localStorage',
      ssr: false
    }
  ]

2、cookie禁用问题:因为网站是在用户信息和token存储在cookie中,禁用之后登录相关操作无法进行。谷歌、火狐禁用cookie,导致localStorage,sessionStorage无法正常使用。

另外,做了一个突发奇想的测试,在axios的配置文件中直接引入store,获取token,即便登录获取到token,也更新了store,但是因为axios作为外部插件引入,并不属于vue 组件,所以无法获取token的最新信息。 

使用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 }
  }

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

相关文章

  • vue实现签到日历效果

    vue实现签到日历效果

    这篇文章主要为大家详细介绍了vue实现签到日历效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • vue实现单点登录的方式汇总

    vue实现单点登录的方式汇总

    最近项目停工了,RageFrame的学习暂时告一段落,这一篇给大家分享下有关单点登录的相关知识,并提供一些demo给大家参考,对vue单点登录的实现方式感兴趣的朋友一起看看吧
    2021-11-11
  • Vue3使用vant检索组件van-search遇到的问题小结

    Vue3使用vant检索组件van-search遇到的问题小结

    当清空按钮与检索按钮同时居右时,点击clear清空按钮事件时会同时触发click-right-icon事件,这个时候容易触发一系列问题,小编小编给大家分享Vue3使用vant检索组件van-search遇到的问题小结,感兴趣的朋友一起看看吧
    2024-02-02
  • vue中el-tab如何点击不同标签触发不同函数的实现

    vue中el-tab如何点击不同标签触发不同函数的实现

    el-tab本身的功能是点击之后切换不同页,本文主要介绍了vue中el-tab如何点击不同标签触发不同函数的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • vue监听浏览器原生返回按钮,进行路由转跳操作

    vue监听浏览器原生返回按钮,进行路由转跳操作

    这篇文章主要介绍了vue监听浏览器原生返回按钮,进行路由转跳操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Vue3+Element+Ts实现表单的基础搜索重置等功能

    Vue3+Element+Ts实现表单的基础搜索重置等功能

    本文主要介绍了Vue3+Element+Ts实现表单的基础搜索重置等功能,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 一文详解如何在Vue3+Vite中使用JSX

    一文详解如何在Vue3+Vite中使用JSX

    vite是一个由vue作者尤雨溪专门为vue打造的开发利器,其目的是使 vue项目的开发更加简单和快速,下面这篇文章主要给大家介绍了关于如何在Vue3+Vite中使用JSX的相关资料,需要的朋友可以参考下
    2023-02-02
  • vue2移动端+swiper实现异形的slide方式

    vue2移动端+swiper实现异形的slide方式

    这篇文章主要介绍了vue2移动端+swiper实现异形的slide方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • vue验证码组件使用方法详解

    vue验证码组件使用方法详解

    这篇文章主要为大家详细介绍了vue验证码组件的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • vue网络请求方案原生网络请求和js网络请求库

    vue网络请求方案原生网络请求和js网络请求库

    这篇文章主要为大家介绍了网络请求方案原生网络请求和js网络请求库的过程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11

最新评论