Vuejs2 因为重新加载页面会删除vuex数据,使用了变异,vuejs?

Vuejs2 因为重新加载页面会删除vuex数据,使用了变异,vuejs?,vuejs2,vuex,Vuejs2,Vuex,目前,我的vuex中有以下配置,我所做的是通过userAuth操作验证用户的角色,并使用UPDATEROL将其分配给状态为“rol_user”的属性。我在登录时执行此操作,以便在vuex中记录用户的角色 以下是vuex配置: import Vue from "vue"; import Vuex from "vuex"; import firebase from 'firebase'; Vue.use(Vuex); export default new Vuex.Store({ sta

目前,我的vuex中有以下配置,我所做的是通过userAuth操作验证用户的角色,并使用UPDATEROL将其分配给状态为“rol_user”的属性。我在登录时执行此操作,以便在vuex中记录用户的角色

以下是vuex配置:

import Vue from "vue";
import Vuex from "vuex";
import firebase from 'firebase';

Vue.use(Vuex);

export default new Vuex.Store({
    state: {
        rol_user: ''
    },
    mutations: {
        UPDATEROL: function (state, payload) {
            state.rol_user = payload.rol_user;
        }
    },
    actions: {
        userAuth: async (context) =>{
            let user = firebase.auth().currentUser;
            if(user){
                let user_info = await firebase.database().ref('users').child(user.uid).once('value');
                let val_user = user_info.val();
                console.log("USER AUTH - VUEX");
                console.log(val_user.rol);
                context.commit('UPDATEROL',{
                    rol_user: val_user.rol
                });
            }
        }
    }
});
它有效地将用户的角色分配给状态属性rol_user。 我遇到的问题是在重新加载页面时。当我重新加载页面rol_时,用户返回其初始状态,即为空。
如何才能使角色的值即使在重新加载页面时也不会丢失,而是仅在我注销之前将其更改为空

您需要使用某种存储机制,并在每次首次安装应用程序时检查存储。例如,您可以将会话密钥存储在localStorage中,或者只存储要持久化的用户状态

注意,我不知道您存储的是什么类型的数据,我假设rol_user是一个对象,如果它是一个字符串,您不需要JSON序列化/反序列化,正如我在下面的示例中所做的那样:

从Vue导入Vue; 从Vuex导入Vuex; 从“firebase”导入firebase; Vue.useVuex; 导出默认的新Vuex.Store{ 声明:{ rol_用户: }, 突变:{ UPDATEROL:函数状态,有效负载{ state.rol_user=payload.rol_user; localStorage&&localStorage.rol\u user=JSON.stringifystate.rol\u user; //^尝试将用户角色存储在localStorage中 }, }, 行动:{ userAuth:async上下文=>{ iflocalStorage&&localStorage.rol\u用户{ //^如果它在localStorage中,请将用户重新登录到/update状态,以匹配它在localStorage中的内容 commit'UPDATEROL',{rol_user:JSON.parselocalStorage.rol_user}; 回来 } 让user=firebase.auth.currentUser; 伊弗瑟{ 让user_info=wait firebase.database.ref'users.childuser.uid.once'value'; 让val_user=user_info.val; console.logUSER AUTH-VUEX; console.logval_user.rol; context.commit'UPDATEROL'{ rol_user:val_user.rol }; } } } };
您也可以使用Cookies Cookies通常更常见,但localStorage也可以正常工作

rol\u用户包含字符串“1”、“2”或“3”@JG\u GJ,然后您可以跳过使用JSON.stringify/JSON.parse。不管有没有,它都可以正常工作,如果它已经是一个字符串,那么就没有必要了。我理解并在我的注销中应该怎么做?localStorage.rol_user=undefinedI理解,如果我看到当我与另一个具有不同角色的用户注销并登录时,它会显示先前启动的用户的角色