前端废物的自救之路(3)使用Cookie完成Nuxt.js中Vuex的持久化

前端废物的自救之路(3)使用Cookie完成Nuxt.js中Vuex的持久化

为什么需要Vuex持久化

在开发的过程中,我们会使用Vuex来存储用户信息、Token等内容,但Vuex的信息是存储在内存中的,当页面刷新时,内容自然就丢失了。我们需要寻找其他的办法使得刷新页面时Vuex的信息能保存下来,也就是Vuex的持久化。

Nuxt.js中的Vuex持久化方案及其可用性

使用Vue.js时,我们一般用vuex-persistvuex-persistedstate等框架完成Vuex的持久化,也并不会出什么问题。但是在Nuxt中,情况就不一样了。

在搜索引擎上搜索Nuxt Vuex持久化,可以找到以下解决方案:

  1. vuex-persistedstate配合js-cookie

    • 地址:nuxt中vuex数据持久化

    • 可用性:不可用,按照文中的方法配置仍然出现找不到window对象的情况。在配置插件的时候配置了ssr: false,仍然找不到window对象,推测可能是NuxtVuex的版本问题(注:这篇文章是19年12月的)。

  2. vuex-persist

  1. nuxtServerInit方法配合cookie-universal-nuxt

终极解决方案:js-cookie配合nuxtServerInit实现Vuex持久化

常见的解决方案都不可用,那么我们就需要终极解决方案:js-cookie配合nuxtServerInit

实现起来也是很简单的。

第一步:安装js-cookie

npm	install --save js-cookie

第二步:设置Vuex时同时设置Cookie

以登录为例,在拿到用户信息后使用js-cookie把用户信息设置到Cookie中。注意Cookie的过期时间要和服务端设置的Token的过期时间保持一致(服务端设置Token的过期时间是4小时),否则Token过期后再访问需要认证的页面会出现循环重定向的问题(我配置了根据Cookie判断用户是否登录的逻辑,并且登录后再访问登录页面会被重定向到后台管理,所以才会出现这样的问题,当然如果没有做这样的配置的话就无所谓了,或者你也可以配置在Token失效后清除Cookie的操作)。

注意expires属性的单位是天,如果需要设置为小时的话可以传入小数。

@/pages/login.vue

import {
    mapMutations } from 'vuex'
import 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Nuxt.js使用Vuex,你需要按照以下步骤进行设置: 1. 首先,你需要在nuxt.config.js文件添加Vue插件配置。你可以通过在plugins数组添加一个对象来实现。这个对象应该具有src属性,指向你的插件文件的路径,并且ssr属性设置为false,以确保插件只在客户端渲染时执行。例如,你可以添加以下代码到nuxt.config.js: plugins: [ { src: '~/plugins/store-cache', ssr: false }, ], 2. 接下来,你需要创建一个Vuex store文件。你可以在store目录下创建一个index.js文件,并在其导入Vuex并创建一个新的store实例。例如: import Vuex from 'vuex' const createStore = () => { return new Vuex.Store({ state: { // 在这里定义你的状态 }, mutations: { // 在这里定义你的mutations }, actions: { // 在这里定义你的actions }, getters: { // 在这里定义你的getters } }) } export default createStore 3. 现在,你已经设置好了Vuex store。你可以在Vue组件使用store的状态、提交mutations和触发actions了。在你的组件,你可以通过使用$store对象来访问store。例如,你可以在computed属性使用$store.state来获取状态,或使用$store.commit来提交一个mutation。例如: export default { computed: { currentUser() { return this.$store.state.user } }, methods: { updateUser() { this.$store.commit('updateUser', { name: 'John Doe' }) } } } 这就是在Nuxt.js使用Vuex的基本方法。通过设置插件配置和创建store实例,你可以在你的Vue组件使用Vuex的状态管理功能。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [nuxt-stash:Nuxt.jsVuex存储的轻量级替代](https://download.csdn.net/download/weixin_42106299/18828526)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Nuxt.jsVuex数据持久化](https://blog.csdn.net/FitnessSnail/article/details/130646101)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [nuxt-typescript-demo:在Nuxt.js使用Typescript和vuex-module-decorators的示例](https://download.csdn.net/download/weixin_42134537/18713370)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值