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
}