Vue -del 工具为什么和 console.log()的不一样

我的 state 是这么定义的

state: {
    captchaUrl:process.env.API_ROOT+'users/getCaptcha?',
    sign_up:{
      msg:'你好',
      dis:false
    },
    user_info:{
      headimgurl:'/static/assets/img/user04.png',
      name:'超哥最帅'
    },
    hasToken:'false',
    headerUser:true
  },

现在我把这个对象存为了一个 conset变量 叫 VUEX_RESET. 然后 当 用户退出时,触发这个事件

this.$store.commit('RESET_VUEX',vuex_reset.VUEX_RESET) //



RESET_VUEX: function (state,ob) {
      console.log('vuex初始化成功')
      state = ob
      console.log(state)//在这里我输出了 state的值,想看看它到底被初始化了没.
    }

现在的问题是,当我点击退出时, 在 VUE-dev里我看到的是这样的state,如下,可以看到数据并没有重置

{
    "captchaUrl": "http://127.0.0.1:9000/api/users/getCaptcha?",
    "sign_up": {
        "msg": "你好",
        "dis": false
    },
    "user_info": {
        "headimgurl": "https://assets.lambda-study.com/images/58.jpg",
        "name": "KingJeason"
    },
    "hasToken": true,
    "headerUser": false
}

而我在 console看到的却看到state的数据重置了.

state: {
    captchaUrl:process.env.API_ROOT+'users/getCaptcha?',
    sign_up:{
      msg:'你好',
      dis:false
    },
    user_info:{
      headimgurl:'/static/assets/img/user04.png',
      name:'超哥最帅'
    },
    hasToken:'false',
    headerUser:true
  }

这时页面的还有用户的信息,但是我一刷新就没有用户的信息了.(我确实不是缓存的问题)

阅读 4.3k
2 个回答

不应该覆盖掉整个state的值,你可以用state.loginInfo保存你需要变更的信息,然后state.loginInfo = ob将其覆盖

我的经验是,如果state内object要overwrite,建议变成在子节点:
state: {

login: {
    captchaUrl:process.env.API_ROOT+'users/getCaptcha?',
    sign_up:{
      msg:'你好',
      dis:false
    },
    user_info:{
      headimgurl:'/static/assets/img/user04.png',
      name:'超哥最帅'
    },
    hasToken:'false',
    headerUser:true
  }
}

}

在mutation中:

RESET_VUEX: function (state,ob) {

  console.log('vuex初始化成功')
  state.login = ob
  console.log(state)//在这里我输出了 state的值,想看看它到底被初始化了没.
}
 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题