Injection Functions לאתחולים חוזרים
פורסם בתאריך 14 בנובמבר 2022
בואו ניתן דוגמא פשוטה של שימוש ב Injection Functions, ומהם נבין טיפ כללי לשימוש ב Injection Functions.
DI
בדרך כלל אנו משתמשים ב- DI
על ידי הזרקת השירותים באמצעות constructor.
בדוגמא זו אנו מזריקים את ה- Store
באמצעות ה- constructor, ואז משתמשים בשירות Store
כדי לבחור נתונים מה- State
.
בעיה
מה קורה אם נרצה לקרוא ל- counter
ברבים מה Components, מה קורה אם נרצה לבצע פעולות חוזרות על אותם הנתונים?
האם עלינו לשכפל את הלוגיקה בכל ה Components?
נכון שניתן להשתמש ב-NGRX Selectors וב- RXJS pipe כדי ליצור אופרטור RXJS מותאם אישית לחילוץ הנתונים, אך עדיין עלינו להזריק את שירות ה- Store
ולקרוא ל- store.pipe
.
באופן כללי עם NGRX
יש לנו הרבה מאוד מקרים שבהם נצטרך אתחולים שנרשמים לחלק מה - state.
Injection Functions
כאשר יש לך אתחולים חוזרים זה סימן טוב לשימוש ב- injection functions.
דרך נוספת שבה ניתן לבקש מה- DI
לתת לך את השירות Store
היא באמצעות הפונקציה inject
:
למעשה ניתן לקרוא לפונקציית ההזרקה מתוך הקונטקסט של ההזרקה שכולל את המאפיינים של המחלקה כמו counter$
.
עם injection function
אותו הקוד יכול להפוך ל:
הקוד לא רק קצר, פשוט ונקי, אלא גם עושה את הרכיב שלך קל יותר לבדיקה ולהרחבה.
ניתן להוסיף לוגיקה נוספת ל useCounter
אם נרצה לשנות את הנתונים בדרך מסוימת, וכן ניתן להשתמש בטכניקה זו אם נרצה לאתחל שאילתת שרת לרכיב.
סיכום
לסיכום אם יש לך אתחולים חוזרים במחלקה שלך כמו:
- קריאות לשרת
- קריאות לשירות
- קריאות לנתונים מ- ngrx או ממקום אחר
במקום לשכפל את הלוגיקה ולהזריק את השירות ב constructor, ניתן להשתמש ב- injection functions ולהזריק את השירות באמצעות הפונקציה inject
.