为了账号安全,请及时绑定邮箱和手机立即绑定

vuex中提交mutations的时候保存到localstorage,想在刷新时从state新获取

vuex中提交mutations的时候保存到localstorage,想在刷新时从state新获取

慕盖茨4494581 2019-03-14 15:15:55
代码如下:Vue.use(Vuex)const localLoginData = global.localStorage;const store = new Vuex.Store({  state: {    logindata:JSON.parse(localStorage.getItem('logindata')),    // 初始化vuex,刷新时获取localstorage    form1: {}  //登录信息  },  getters:{    getUserInfo:(state)=>state.logindata==null?'':state.logindata,  },  mutations: {    updatelogindata(state, logindata) {      state.logindata = logindata;      localStorage.setItem('logindata',JSON.stringify(logindata));// 提交mutation成功后保存logindata到localStorage    },    updatamessage(state, form1) {      state.form1 = form1    }      },为什么一刷新还是state还是清空了,明明已经保存成功到了localstorage里了啊,试过很多方法了,难道vuex不能实现持久化缓存么?
查看完整描述

5 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

看到这个问题我也想不通,然后我按你的思路试了一下,能很好的工作,所以在vuex的mutation里将数据保存到localstorage应该是没有问题的,你还得仔细查一下代码是不是哪个地方写的有问题。


查看完整回答
反对 回复 2019-03-18
?
开满天机

TA贡献1786条经验 获得超13个赞

  1. 登录信息也保存一下,在 state.form1 = form1 后面;

  2. const localLoginData = global.localStorage 这句可以不用。


查看完整回答
反对 回复 2019-03-18
?
慕村225694

TA贡献1880条经验 获得超4个赞

这个应该可以结局你的问题
链接描述

查看完整回答
反对 回复 2019-03-18
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

你可以通过actions来获取logindata的值


 mutations: {

   getUsers(state, e){

      state.logindata = e;

      

    },

 },

 actions: { 

    getUser ({ commit }) {

      let logindata = JSON.parse(localStorage.getItem('logindata'));

      commit('getUsers',logindata );

    }

  },



this.$store.dispatch('getUser');

这样state就有值了。


查看完整回答
反对 回复 2019-03-18
  • 5 回答
  • 0 关注
  • 805 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号