方法一:使用 localStorage 存储数据

window.localStorage.setItem(key,value)

方法二:使用 vuex-persistedstate插件

vuex 存在一个痛点,就是刷新以后vuex里面存储的state就会被浏览器释放掉(state都是存储在内存中的)。

办法:

通过vuex-persistedstate插件,实现将数据存储到本地。

1.实现

npm install vuex-persistedstate  --save
import createPersistedState from 'vuex-persistedstate'
export default new Vuex.Store({
state:{},
getters:{},
actions:{},
mutations:{},
modules:{},
plugins: [createPersistedState()] //加上这个就可以了 //里面设置需要缓存的内容
}) API: https://www.npmjs.com/package/vuex-persistedstate

2. 举个例子:如果你不小心关掉了一个标签,他们可以重新打开并回到之前页面的状态。

自定义存储

如果在本地存储中存储Vuex存储的状态并不理想。人们可以轻松地实现功能使用cookie

import { Store } from 'vuex'
import createPersistedState from 'vuex-persistedstate'
import * as Cookies from 'js-cookie' const store = new Store({
// ...
plugins: [
createPersistedState({
storage: {
getItem: key => Cookies.get(key),
setItem: (key, value) => Cookies.set(key, value, { expires: 3, secure: true }),
removeItem: key => Cookies.remove(key)
}
})
]
})
// 用sessionStorage替换localStorage
// createPersistedState({ storage: window.sessionStorage })

方法三: 使用vue-cookie插件

cookie 可以设置过期时间

1.安装

npm install vue-cookie --save

2.在 store中存储起来

import Vue from 'vue';
import Vuex from 'vuex'; Vue.use(Vuex)
var VueCookie = require('vue-cookie'); export default new Vuex.Store({
state: {
token: VueCookie.get('token')
},
mutations: {
saveToken(state, token) {
state.token = token;
// 设置存储
VueCookie.set('token', token, { expires: '30s' });
}
},
actions: { }
})

3.在登录页面 设置存储起来

import { mapMutations } from 'vuex';
export default {
methods: {
login() {
this.saveToken('123')
},
...mapMutations(['saveToken'])
}
};

最新文章

  1. 腾讯开放平台 手机QQ登录 错误码:110406 解决办法
  2. Python3 函数
  3. PHP中使用redis执行lua脚本示例
  4. hibernate 查询
  5. BZOJ 3280: 小R的烦恼 & BZOJ 1221: [HNOI2001] 软件开发
  6. linux命令之cat
  7. HDU 5876 Sparse Graph 【补图最短路 BFS】(2016 ACM/ICPC Asia Regional Dalian Online)
  8. 【结构型】Adapter模式
  9. java通过JDBC链接SQLServer2012 (含1433端口打通)
  10. Xcode9的xib只支持iOS7.0及以上版本
  11. ECDSA host key for 192.168.0.101 has changed and you have requested strict checking.
  12. mysql 批量导入 Packets larger than max_allowed_packet are not allowed
  13. 剑指Offer 45. 扑克牌顺子 (其他)
  14. linux 用户/群组/权限
  15. 2018.10.15 bzoj4445: [Scoi2015]小凸想跑步(半平面交)
  16. oracle字符集查看、修改、版本查看
  17. JavaScript DOM 第3章 DOM
  18. windows7用WMware安装Linux虚拟机详细步骤
  19. 针对通过 SSH 连接到 Azure Linux VM 时发生的失败、错误或被拒绝问题进行故障排除
  20. Android stadio 自定义debug release keystore

热门文章

  1. Codeforces Round #345 (Div 2)
  2. 神经网络内在逻辑:没打开的AI“黑匣子”
  3. 如何下载如腾讯课堂等PC网页视频的方法
  4. [CSP-S模拟测试]:山屋惊魂(模拟)
  5. layui select动态添加option
  6. QBXT Day 5图论相关
  7. Octavia 项目加速 OpenStack LBaaS 落地大规模应用场景
  8. Python 笔试集(2):你不知道的 Python 整数
  9. docker原理(转)
  10. 七:flask-一些小细节