怎样重置vuex所有state的状态

现在有一个场景,在用户退出登录之后,要将state下面的所有状态重置回初始状态,避免在切换用户的时候数据会串,请问要怎样做呢?

clipboard.png

阅读 15.4k
6 个回答

已经有人答了,我认为最好的方法就是创建一个mutation叫做reset,然后再通过reset的action调用这个方法。
至于初始值你可以用一个变量存着,但是注意避免对象引用赋值,拷贝一个新对象。

  1. 创建一个mutation,将state重新赋值为初始值(可以在开始时深拷贝一个state对象)

  2. 创建一个action,触发上面的mutation

  3. 退出登录时调用这个action
    没实际试过。

"将state下面的所有状态重置回初始状态"从实现上来讲其实就是一次变量赋值,你可以把初始状态存在一个常量中,然后封装一个将state赋值为这个常量的action,在需要的时候调用就好了。

单独定义初始值,然后拷贝给state
state初始化,就在拷贝一次

新手上路,请多包涵
mutations:{
   [USER_SIGNOUT](state){
         Object.key(state).foreach((k)=>{
                Vue.delete(state,k);
         })
    }
}

貌似要这么写

const stateTpl = {
  ... // 状态在此处写
}

// state
state: window._.cloneDeep(stateTpl)

// mutations
resetAll (state) {
  Object.assign(state, stateTpl) // 要用Object.assign而不是直接给state赋值。
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题