Advertisement
Clamator

Untitled

Mar 25th, 2023
710
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // данные метода находятся в auth.js
  2. // этот метод обращается к базе и забирает объект, находится в actions
  3. async getUserDataBase({ dispatch }) {
  4.       let userId = await dispatch("getUid"); // этот метод просто возвращает текущий юзерАйДи
  5.       // ключ есть
  6.       console.log(userId);
  7.       const dbRef = ref(getDatabase());
  8.       let data = await get(child(dbRef, `users/${userId}/info`))
  9.         .then((snapshot) => {
  10.           if (snapshot.exists()) {
  11.             // console.log(snapshot.val());
  12.             return snapshot.val();
  13.             // commit("setUserData", snapshot.val()); - не припомню, чтобы это записывало данные
  14.           } else {
  15.             console.log("No data available");
  16.           }
  17.         })
  18.         .catch((error) => {
  19.           console.error(error);
  20.         });
  21.  
  22.       return data;
  23.     },
  24.  
  25. // данный метод тоже находится в actions
  26. // он авторизует юзера, вызывает метод получения данных юзера с БД
  27. // а потом вызывает мьютейш, который должен записывать данные в объект.        
  28. async login(context, { email, password }) {
  29.  await firebase.auth().signInWithEmailAndPassword(email, password);
  30.  const userData = await context.dispatch("getUserDataBase");
  31.  console.log(userData);
  32.  context.commit("setUserData", userData);
  33.  },
  34.  
  35. // вот непосредственно мьютейшнс
  36. mutations: {
  37.     setUserData(state, userData) {
  38.       // state.userData = Object.assign({}, userData);  это закомменчено, т.к. не получается занести данные
  39.       localStorage.removeItem("userData");
  40.       localStorage.setItem("userData", JSON.stringify(userData)); //
  41.     },
  42.   },
  43.      
  44.      
  45. // данные методы находятся в index.js импорт сделан через
  46. import auth from "./auth";
  47. // в модули добавил вот так
  48. modules: {auth},
  49.  
  50. // тут сам стейт
  51. state: {
  52.   userData: {},
  53. },    
  54.      
  55. // а здесь геттер  
  56. getters: {
  57.   userData: (state) => state.userData,
  58. },      
  59.    
  60. // этот мьютейншн забирает данные из локал стоража и записывает в state.userData
  61. GET_ACCS_FROM_LOCAL_STORAGE(state) {
  62.   state.userData = JSON.parse(localStorage.getItem("userData"));
  63. },
  64.    
  65. // вот это в основном App.vue
  66. created() {
  67.     store.commit("GET_ACCS_FROM_LOCAL_STORAGE");
  68.   },    
  69.      
  70. // это в том компоненте, который я хочу использовать для вывода данных
  71. computed: {
  72.     ...mapGetters(["userData"]),
  73.   },    
  74.      
  75. <span ref="username" class="d-none d-sm-inline mx-1">
  76.         {{ userData.name }}
  77.       </span>      
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement