רוצים להשתלב בתעשיית ההייטק?למסלולי הכשרה ב-Full Stack, סייבר ו-AI לחצו כאן
React logo

useReducer Hook

למה useReducer ולא useState?

בעוד ש-useState מצוין למצבים פשוטים, useReducer הוא הבחירה הנכונה כאשר:

  • לוגיקה מורכבת: יש לכם פעולות רבות שמשפיעות על אותו מידע.
  • State תלוי: המצב הבא תלוי בערך הקודם בצורה מורכבת.
  • סדר וארגון: אנו מרכזים את כל הלוגיקה של ה-State בפונקציה אחת מחוץ לקומפוננטה.

תוכן עניינים

  1. הדגמה חיה: ניהול רשימה
  2. מבנה ה-Action וה-Dispatch
  3. פונקציית ה-Reducer (ניהול הלוגיקה)
  4. ארגון הקבצים (Import/Export)
  5. סיכום: useReducer מול useState

1) הדגמה חיה: ניהול State מרוכז

רשימת משתתפים

אברהם
שני
מיכאל
דניאל

בדוגמה זו, אנו משתמשים ברינדור מותנה כדי להחליף בין כפתור ה-Clear ל-Reset בהתאם לאורך הרשימה.

2) איך זה עובד? (Dispatch)

ב-useReducer, אנו לא משנים את הערך ישירות. אנו משגרים (Dispatch) פעולה שמסבירה מה ברצוננו לעשות. אובייקט ה-Action כולל type (מה הפעולה) ו-payload (מידע נוסף, כמו ID של משתמש).

// דוגמה למשלוח פעולה להסרת פריט
const removeItem = (id) => {
  dispatch({ type: 'REMOVE_ITEM', payload: { id } });
};

3) פונקציית ה-Reducer

זוהי "תחנת הכוח" של ה-Hook. היא מקבלת את ה-State הישן ואת ה-Action, ומחזירה State חדש לגמרי. חשוב לזכור: ה-Reducer חייב תמיד להחזיר State, אחרת האפליקציה תישבר.

const reducer = (state, action) => {
  if (action.type === 'REMOVE_ITEM') {
    // פילטור הרשימה והחזרת אובייקט חדש המכיל את המערך המעודכן
    const newPeople = state.people.filter(p => p.id !== action.payload.id);
    return { ...state, people: newPeople };
  }
  
  if (action.type === 'CLEAR_LIST') {
    return { ...state, people: [] };
  }

  // זריקת שגיאה במקרה של פעולה לא מוכרת עוזרת באיתור באגים
  throw new Error(`No matching "${action.type}" action type`);
};

4) ארגון קבצים (Best Practices)

כדי לשמור על קוד נקי, מומלץ לפצל את ה-useReducer לשלושה קבצים:

  • actions.js: קובץ המכיל קבועים (Strings) של שמות הפעולות.
  • reducer.js: קובץ המכיל את פונקציית הלוגיקה בלבד.
  • page.jsx: הקומפוננטה המציגה את ה-UI ומשתמשת ב-dispatch.

סיכום: useReducer מול useState

useState

עדכון ישיר של המידע (setState)

מתאים למשתנים בודדים (Boolean, String)

הלוגיקה מפוזרת בפונקציות שונות בקומפוננטה

useReducer

שיגור פקודה (dispatch(action

מתאים לאובייקטים ומערכים מורכבים

כל הלוגיקה מרוכזת במקום אחד (Reducer)

טיפים למקצוענים

  • Default Return: תמיד תחזירו את ה-State כברירת מחדל בסוף ה-Reducer למניעת קריסות.
  • Action Constants: שימוש במשתנים במקום מחרוזות (Strings) מונע שגיאות כתיב קשות לאיתור.
  • Scalability: ה-useReducer הוא ההכנה הטובה ביותר ללימוד ספריות ניהול State גלובליות כמו Redux.

למה ללמוד תכנות וסייבר ב-More-ways?

עולם הטכנולוגיה משתנה במהירות, והיום כבר לא מספיק רק לדעת לכתוב קוד. ב-More-ways אנחנו מאמינים בשילוב קריטי בין פיתוח Full-Stack, הבנת ארכיטקטורת רשתות, ושימוש מתקדם ב-בינה מלאכותית (AI). המדריך שלפניכם הוא רק טעימה מהידע המקצועי שאנו מעבירים בקורסים שלנו, הכוללים ליווי אישי, פרויקטים מעשיים והכנה לשוק העבודה המודרני.

האם אפשר ללמוד תכנות ללא ניסיון?

בוודאי. המסלולים שלנו ב-More-ways מונגשים גם למתחילים, עם דגש על חשיבה לוגית ובניית בסיס איתן לפני הצלילה לקוד המורכב.

איך AI משתלב בלימודי הייטק?

אנחנו מלמדים אתכם להשתמש בכלי AI כדי להאיץ את הפיתוח, לדבג קוד ביעילות ולבנות אפליקציות חכמות יותר בזמן קצר יותר.

מוכנים לקחת את הקריירה לשלב הבא?

מעבר לאתר More-ways הרשמי