Nuxt 状态保持

最近工地没啥砖头搬,找找可以研究的地方

业务需求在Nuxt的SSR状态下,需要记录用户的登录状态.

状态保持有两种方案

1 使用vuex-persistedstate将本地缓存的数据和vuex的数据合并,只能在客户端内拿到token状态

2 使用cookie在vuex nuxtServerInit方法再服务端就将数据合并,可以在服务端渲染之前就拿到token状态

方法一存在的问题:无法在服务端初始化渲染就拿到登录状态,如果你的业务逻辑,在asyncData内就要使用用户的token,这时候是拿不到浏览器的token,只能通过cookie

 

现在业务需要通过token 在asyncData的请求内使用,即选择第二种方式

store/index.js  

●nuxtServerlnit只能写在store/index.js

●nuxtServerlnit仅在服务端执行

 

安装nuxt模块

npm i -s cookie-universal-nuxt  //安装在生产环境

export const actions = {
          //app为当前实例
          //该方法必须声明在store的第一层模块(根模块)index.js文件
          //token 为后台传进来的cookie键名
         nuxtServerInit({ commit },{ app }) {
             //初始化store的一些信息。是在服务端渲染开始之前
             //两个参数 store和content上下文
            const token = app.$cookies.get("token");
            if (token) {
               console.1og("nuxtServerInit: token:" + token);
               commit("user/SET_TOKEN",token);//保存token
            }
         }
};

nuxt.config.js

 

modules: ["cookie-universal-nuxt"],

登录后存cookie

this.$cookies.set('cookie-name', 'cookie-value', {
  path: '/',
  maxAge: 60 * 60 * 24 * 7
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值