ToB企服应用市场:ToB评测及商务社交产业平台
标题:
通过cookie和localstorage实现数据持久化
[打印本页]
作者:
铁佛
时间:
2022-6-26 03:31
标题:
通过cookie和localstorage实现数据持久化
最近在写vue项目的时候,把登录的用户信息放在Vuex(store)中,但只要页面一刷新,登录时存入Vuex(store)的数据就被清除了,为解决这一问题,我决定将用户登录信息存入cookie中。
注意:cookie只能存储非常小的数据,大量的数据可存储于localstorage中
安装插件
使用cookie前,需要安装相应的插件,localstorage无需安装插件
npm install js-cookie --save
复制代码
封装方法
新建/src/utils/cookie.js (文件夹和文件名可根据自己的习惯命名)
import cookie from 'js-cookie' //导入插件
export function getCookie(key) { //获取,key为要获取的cookie
return cookie.get(key)
}
export function setCookie(key, data) { //设置,key为要设置的cookie名,data为对应的值
return cookie.set(key, data)
}
export function removeCookie(key) { //删除,key为要删除的cookie
return cookie.remove(key)
}
复制代码
新建/src/utils/storage.js
export function getStorage(key) {
return JSON.parse(localStorage.getItem(key)) //JSON.parse()用于解析Json字符串
}
export function setStorage(key, data) {
localStorage.setItem(key, JSON.stringify(data)) //JSON.stringif()用于将JS对象转换为JSON字符串
}
export function removeStorage(key) {
localStorage.removeItem(key)
}
复制代码
实战
此实战案例是在
vue+mysql实现登录案例
的基础上构建的,有需要请自行移步
Vuex(store)
import Vue from 'vue'
import Vuex from 'vuex'
import { getCookie, removeCookie, setCookie } from '../utils/cookie' //导入对应方法
import { getStorage, removeStorage, setStorage } from '../utils/storage'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
username: getCookie('username'),
info: getStorage('info')
},
mutations: {
setCookie(cookie) {
setCookie(cookie.key, cookie.data)
},
removeCookie(key) {
removeCookie(key)
},
setStorage(storage) {
setStorage(storage.key, storage.data)
},
removeStorage(key) {
removeStorage(key)
}
}
})
复制代码
对于Vuex(store)方法定义、方法调用、参数传递等知识不了解的,可参考
这里
,或自行去找文章或视频学习,这里不做赘述,直接使用了
登陆页面
输入用户名和密码,登陆成功时,将用户名存入cookie
<template>
<h2>登录页面</h2>
<el-form ref="form" :model="form" label-width="20%">
<el-form-item label="用户名:">
<el-input v-model="form.username"></el-input>
</el-form-item>
<el-form-item label="密 码:">
<el-input v-model="form.password" type="password"></el-input>
</el-form-item>
</el-form>
<el-button type="primary" round @click="login" class="btn">登录</el-button>
</template>
复制代码
首页
<template>
<h2>欢迎:{{username}}</h2>
<a @click="out">退出登录</a>
</template>
复制代码
效果演示
cookie
这样,即使页面刷新,数据也不会被清除了。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4