storage存储模块-vuex持久化处理

1:存储登录用户信息到vuex中

在store文件夹下面,创建modules文件夹在文件夹下创建user.js文件

user.js文件

const state = {
  userInfo: {
    userId: '',
    token: ''
  }
}
const mutations = {
  setUserInfo (state, obj) {
    console.info(obj)
    state.userInfo.userId = obj.data.userId
    state.userInfo.token = obj.data.token
  }
}
const actions = {

}
const getters = {

}
export default {
  namespaced: true,
  mutations,
  actions,
  getters,
  state
}

挂载user.js文件挂载到vuex下 

import Vue from 'vue'
import Vuex from 'vuex'
import user from '@/store/modules/user'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
  },
  getters: {
  },
  mutations: {
  },
  actions: {
  },
  modules: {
    user
  }
})

在user.js文件中编写操作vuex的mutations方法 

const mutations = {
  setUserInfo (state, obj) {
    console.info(obj)
    state.userInfo.userId = obj.data.userId
    state.userInfo.token = obj.data.token
  }
}

 页面调用操作vuex存放数据的方法

2:使用storage存储模块解决页面刷新数据丢失问题

用户登录信息存到vuex中,发现刷新浏览器页面,vuex中的数据会丢失

为解决这个问题使用localStorage存储到本地一份

第一步:在utils文件夹中新建一个localstorage.js文件用来设置l,获取,删除,localstoreage中的数据

const INFO_KEY = 'hm_shopping_info'
const USER_TOKEN = 'user_token'

// 获取个人信息
export const getInfo = () => {
  const result = localStorage.getItem(INFO_KEY)
  return result ? JSON.parse(result) : { token: '', userId: '' }
}
// 设置个人信息
export const setInfo = (info) => {
  localStorage.setItem(INFO_KEY, JSON.stringify(info))
}
// 移除个人信息
export const removeInfo = () => {
  localStorage.removeItem(INFO_KEY)
}

// 获取个人信息
export const getUserToken = () => {
  return localStorage.getItem(USER_TOKEN)
}
// 设置个人信息
export const setUserToken = (tokenInfo) => {
  localStorage.setItem(USER_TOKEN, tokenInfo)
}
// 移除个人信息
export const removeUserToken = () => {
  localStorage.removeItem(USER_TOKEN)
}

第二步:存放登录信息的vuex模块,调用localstorage.js文件中的方法

import { getInfo, setInfo, setUserToken, getUserToken } from '@/utils/storage'
const state = {
  // 获取数据重新赋值
  userInfo: getInfo(),
  // 用户token
  userToken: getUserToken()
}
const mutations = {
  setUserInfo (state, obj) {
    // 将用户信息存放到vuex中管理
    state.userInfo = obj.user
    state.userToken = obj.token
    // 将数据存放到localstorage中
    setInfo(obj.user)
    // 设置用户token
    setUserToken(obj.token)
  }
}
const actions = {

}
const getters = {

}
export default {
  namespaced: true,
  mutations,
  actions,
  getters,
  state
}

 

相关推荐

  1. vuex实现持久存储

    2024-06-10 21:04:04       47 阅读
  2. Vuex如何做持久存储

    2024-06-10 21:04:04       30 阅读
  3. 持久存储 StorageClass

    2024-06-10 21:04:04       30 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-10 21:04:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-10 21:04:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-10 21:04:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-10 21:04:04       18 阅读

热门阅读

  1. C语言中整形提升举例说明

    2024-06-10 21:04:04       10 阅读
  2. C#--使用CMake构建C++程序调用示例

    2024-06-10 21:04:04       13 阅读
  3. ubuntu20.04 升级(卸载安装)NVIDIA 驱动程序

    2024-06-10 21:04:04       11 阅读
  4. 硬件工程师学习规划

    2024-06-10 21:04:04       12 阅读
  5. BGP选路规则

    2024-06-10 21:04:04       11 阅读
  6. EntitiesSample_9. CrossQuery

    2024-06-10 21:04:04       12 阅读
  7. PostgreSQL:在CASE WHEN语句中使用SELECT语句

    2024-06-10 21:04:04       13 阅读