现在有一个场景,在用户退出登录之后,要将state下面的所有状态重置回初始状态,避免在切换用户的时候数据会串,请问要怎样做呢?
创建一个mutation
,将state
重新赋值为初始值(可以在开始时深拷贝一个state
对象)
创建一个action
,触发上面的mutation
退出登录时调用这个action
没实际试过。
"将state下面的所有状态重置回初始状态"从实现上来讲其实就是一次变量赋值,你可以把初始状态存在一个常量中,然后封装一个将state赋值为这个常量的action,在需要的时候调用就好了。
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赋值。
}
10 回答11k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
已经有人答了,我认为最好的方法就是创建一个mutation叫做reset,然后再通过reset的action调用这个方法。
至于初始值你可以用一个变量存着,但是注意避免对象引用赋值,拷贝一个新对象。