דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. לא מבין למה מגיע ערך ריק. js

לא מבין למה מגיע ערך ריק. js

מתוזמן נעוץ נעול הועבר תכנות
6 פוסטים 2 כותבים 186 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • chagoldC מנותק
    chagoldC מנותק
    chagold
    כתב ב נערך לאחרונה על ידי chagold
    #1

    במוטציה בvueX.
    אני מדפיס בקונסול את האובייקטthis.getters.getUser, ומדפיס כדלהלן.
    371740df-1ac7-4899-8527-02eb4236e32d-image.png

    אבל כשאני מדפיס this.getters.getUser.accountselected הוא מדפיס אותה ריק.

    ???

    תודה.

    chagoldC מוטי אורןמ 2 תגובות תגובה אחרונה
    0
    • chagoldC מנותק
      chagoldC מנותק
      chagold
      השיב לchagold ב נערך לאחרונה על ידי chagold
      #2

      כשאני עושה לו

      setTimeout(() => {console.log(this.getters.getUser.accountselected)}, 1000);
      

      הוא חוזר תקין. אבל כששתלתי אותו בתוך async/await הוא מחזיר ריק. אולי בגלל שהערך הוא "" ולא undefined.

      איך עוקפים את זה?

      תגובה 1 תגובה אחרונה
      0
      • מוטי אורןמ מנותק
        מוטי אורןמ מנותק
        מוטי אורן
        השיב לchagold ב נערך לאחרונה על ידי
        #3

        @chagold איך הגדרת את ה - getter של getUser? אם תוכל להעלות קוד.

        chagoldC תגובה 1 תגובה אחרונה
        1
        • chagoldC מנותק
          chagoldC מנותק
          chagold
          השיב למוטי אורן ב נערך לאחרונה על ידי
          #4

          @מוטי-אורן

          const state = {
          	user: JSON.parse(localStorage.getItem('user')),
          }
          
          // getters
          const getters = {
          	getUser: state => {
          		return state.user;
          	},
          }
          

          ויש אירוע selectaccount אח"כ שמעדכן את החשבון הנבחר (accountselected)

          selectaccount(state,account) {
          		if (account) state.user.accountselected = account
          		localStorage.setItem('user', JSON.stringify(state.user));	
          	}
          

          הסיבה לשגיאה היא ככה"נ האירוע המאוחר שהופך את הערך מסטרינג ריק לערך החשבון הנבחר. השאלה איך הדרך הנכונה אני מעכב את הקריאה עד שהערך מתמלא, כשawait לא עוזר כנ"ל

          מוטי אורןמ תגובה 1 תגובה אחרונה
          1
          • מוטי אורןמ מנותק
            מוטי אורןמ מנותק
            מוטי אורן
            השיב לchagold ב נערך לאחרונה על ידי מוטי אורן
            #5

            @chagold האמת שלא לגמרי הבנתי את הסיטואציה... אבל ממה שאני כן (מקווה ש)הבנתי, לכאורה watch יכולה לעזור לך, משהו כזה:

            Vue.use(Vuex);
            
            const store = new Vuex.Store({
                state: {
                    user: JSON.parse(localStorage.getItem('user'))
                },
                getters: {
                    getUser(state) {
                        return state.user;
                    }
                },
                mutations: {
                    selectAccount(state, account) {
                        if (account) state.user.account = account;
                        localStorage.setItem('user', JSON.stringify(state.user));
                    }
                }
            });
            
            const vm = new Vue({
                el: '#app',
                store,
                watch: {
                    '$store.state.user': function () {
                        console.log(this.$store.state.user.account)
                    }
                }
            })
            // אפשר גם ככה
            vm.$watch('$store.state.user', function (val, oldVal) {
                console.log(val.account)
            })
            
            // ואח"כ באיזשהו שלב אתה מבצע את המוטציה
            
            vm.$store.commit('selectAccount', 'admin')
            

            עוד על watch פה

            chagoldC תגובה 1 תגובה אחרונה
            2
            • chagoldC מנותק
              chagoldC מנותק
              chagold
              השיב למוטי אורן ב נערך לאחרונה על ידי
              #6
              פוסט זה נמחק!
              תגובה 1 תגובה אחרונה
              0

              בא תתחבר לדף היומי!
              • התחברות

              • אין לך חשבון עדיין? הרשמה

              • התחברו או הירשמו כדי לחפש.
              • פוסט ראשון
                פוסט אחרון
              0
              • דף הבית
              • קטגוריות
              • פוסטים אחרונים
              • משתמשים
              • חיפוש
              • חוקי הפורום