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

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

push מזריק לכל הItems

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

    שלום וברכה
    לאחר שגמרתי לשבור את הראש....
    מישהו מכון להסביר למה השורה הבאה עלולה לזרוק את האלמנט החדש לכל הitems ב contentColumns

    sections[0].contentColumns[0].widgets.push(1)
    

    האם יש מצבים כאלו?

    המוזר עוד יותר שזה קורה לי רק בפעם הראשונה והשניה של הpush אחרי זה הכל תקין

    yossizY תגובה 1 תגובה אחרונה
    0
  • yossizY מנותק
    yossizY מנותק
    yossiz
    השיב לש.ב.ח. ב נערך לאחרונה על ידי
    #2

    @ש-ב-ח יש לדוגמה חיה (plunker וכדומה)? נראה לי שחסר פה יותר מדי רקע.

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

    ש תגובה 1 תגובה אחרונה
    2
  • ש מנותק
    ש מנותק
    ש.ב.ח.
    השיב לyossiz ב נערך לאחרונה על ידי
    #3

    @yossiz ניסיתי ליצור דוגמא כזאת אבל זה לא קרה
    זה קורה אצלי...
    איך לא עלינו אני בודק מה הולך פה..
    אני לא משתמש פה אם פונקציה שאני יצרתי... זו של js

    גם עשיתי brackpoint בכלי המפתחים של js על השורה
    ואכן היא נקראת רק פעם אחת

    (האמת שאני מדבר על state של ריאקט אבל בדמו ניסיתי בדיוק את מה שיצרתי)
    הנה הוא (הוא בסדר ועובד כמצופה)
    https://codesandbox.io/s/goofy-neumann-xy65e

    yossizY תגובה 1 תגובה אחרונה
    0
  • yossizY מנותק
    yossizY מנותק
    yossiz
    השיב לש.ב.ח. ב נערך לאחרונה על ידי
    #4

    @ש-ב-ח זה מחזק אצלי את ההרגשה שהגורם זה משהו צדדי שלא כתוב בשאלה. אבל בלי דוגמה קשה מאוד לדעת מה הדבר הצדדי הזה...

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

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

    @yossiz
    הצלחתי לשחזר את הבעיה כאן
    https://codesandbox.io/s/angry-feather-qhhi6?file=/src/App.js

    הורדתי הרבה קוד לא רלוונטי
    שים לב לצעדים לשחזור

    כשתפתח תראה בתצוגה את המערך
    המערך מאותחל עם אובייקט אחד (הנקרא section) [ אם תשנה את הuseItems ותכניס לו פרמטר של מערך ריק הוא יאותחל כמערך ללא אלמנטים ]

    הsection שמאותחל בתחילה לא עושה בעיות

    אם תלחץ על הכפתור Add Widget הוא יוסיף לאובייקט האחרון בcontentColumns הראשון את הספרה 1 בתוך מערך הwidgets.

    לאחר מכן תוסיף section ע"י לחיצה על הAdd section
    עכשיו חזור על תהליך הוספת widget והנה הבעיה בהתגלמותה.
    הספרה 1 נוספת לכל widgets שב contentColumns שבאובייקט האחרון

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

    עיין ותמצא נחת (מקווה שגם אני 😉 )

    yossizY תגובה 1 תגובה אחרונה
    3
  • ש מנותק
    ש מנותק
    ש.ב.ח.
    כתב ב נערך לאחרונה על ידי
    #6
    פוסט זה נמחק!
    תגובה 1 תגובה אחרונה
    -1
  • yossizY מנותק
    yossizY מנותק
    yossiz
    השיב לש.ב.ח. ב נערך לאחרונה על ידי yossiz
    #7

    @ש-ב-ח סליחה על איחור התשובה.

    מצאתי את הבעיה בשורה 46 של הקובץ useItems.js. אתה מאתחל מערך columns על ידי שימוש בפונקציית Array.fill, ואתה מעביר לו אובייקט כארגומנט.
    הבעיה היא שעכשיו המערך מאוכלס בשורה של ערכים שכל אחד מצביע על אותו אובייקט.
    שינוי לאבר אחד ישתקף בכולם.

    האם אתה מכיר את ההבדל המהותי בין ערכים פשוטים לאובייקטים ב-JS?

    (ראה כאן שאלה דומה שלך... 🙂 היה זכור לי שדיברתי פעם על ההבדלים בין reference types ל-value types אז ניסיתי לחפש והגעתי לפוסט זה. אבל אין שם הסבר מעמיק על הנושא.)

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

    ש תגובה 1 תגובה אחרונה
    4
  • yossizY מנותק
    yossizY מנותק
    yossiz
    כתב ב נערך לאחרונה על ידי yossiz
    #8

    הדגמת הבעיה בשתי שורות:

    const a = Array(3).fill({});
    a[0].foo = 'bar';
    console.log(a); // [{ foo: 'bar' }, { foo: 'bar' }, { foo: 'bar' }]
    

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

    תגובה 1 תגובה אחרונה
    5
  • ש מנותק
    ש מנותק
    ש.ב.ח.
    השיב לyossiz ב נערך לאחרונה על ידי
    #9

    @yossiz תודה.

    את הבדלים בין ערכים פשוטים לאובייקטים אני מכיר גם מכיר.
    גם בשאלה שם הכרתי וידעתי מהבעיה, אך לא ידעתי איך לפתור אותה (בעצם "להעתיק" או "לנתק" - כמו שקראתי לזה שם).

    עברתי על הקוד וחיפשתי את הבעיה כמה וכמה וכמה וכמה ... פעמים.
    לפעמים צריך אורח לרגע שיראה כל פגע...

    כמה גדולים דברי חכמים
    אין אדם רואה נגעי(ם שהוא יצר ב)עצמו...

    תגובה 1 תגובה אחרונה
    2

  • התחברות

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

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

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

  • התחברו או הירשמו כדי לחפש.