כשאנחנו בונים קומפוננטת ריאקט צריך לזכור שאתה לא יודע איך ישתמשו בקומפוננטה הזאת או מאיזה מקומות במסך. אז דמיין שמישהו יוצר כמה פעמים את הקומפוננטה ועכשיו הקוד רץ, אז getElementById יחזיר לך את האלמנט הראשון שמתאים, אפילו שיש כמה אלמנטים כאלה על המסך (אחד לכל קומפוננטה).
באופן כללי עדיף לא להשתמש ב id בתוך קומפוננטת ריאקט מהסיבה הזאת.
כתבתי קוד לשאלה על ממיר יחידות זמן, אבל זה לא עובד כמו שצריך.
השעות בסדר גמור, אבל הדקות והשניות עולות ויורדות המון בכל לחיצה על החיצים של הפלוס והמינוס,
דבר נוסף, אשמח לדעת אם יש דרך יותר קצרה ויעילה לכתוב את הקוד
הי דבר ראשון והכי חשוב מהקוד הזה הוא השימוש ב State. זו נקודה מאוד רגישה בריאקט.
משתנה State קובע ״מצב עניינים״ על העמוד. אפשר להגיד שאם אוספים את כל משתני הסטייט יחד הם מתארים את כל המצבים האפשריים שהקומפוננטה יכולה להיות בהם. בשביל להבין איזה משתנים צריכים להיות בסטייט אנחנו צריכים להסתכל על הקומפוננטה ולחשוב באיזה מצבים היא יכולה להיות, כלומר מה יכול להיות מוצג על המסך בכל רגע נתון.
בדוגמה של ממיר יחידות זמן האפשרויות שיוצגו בכל שלושת התיבות נקבעות על ידי מספר אחד בלבד (ופה אנחנו יכולים לבחור אם זה מספר הדקות, השעות או השניות). ניקח לדוגמה את השניות. אז אם אנחנו יודעים מה מציגה תיבת השניות אנחנו גם יודעים מה מציגה תיבת הדקות ומה מציגה תיבת השעות.
אפשר להגיד שמספיק לשמור את המספר שנשמר בתיבת השניות כדי לתאר את כל המצבים שהקומפוננטה יכולה להציג על המסך. לעולם לא נצטרך מספרים נוספים, ולכן הקומפוננטה צריכה משתנה State אחד בלבד.
לכן צעד ראשון הייתי משכתב את הקומפוננטה כדי להשתמש רק במשתנה Seconds ב State ואת שני האחרים לחשב ממנו. זה לבד עשוי לפתור את הבעיה.