שמות

21/01/2020

המנגנון האהוב עליי בריאקט נקרא dangerouslySetInnerHTML. זהו מאפיין של קומפוננטה שמבטל את ההגנה הטבעית של קומפוננטות ריאקט ממתקפות XSS, אבל גם הכרחי כשאנחנו רוצים להציג תוכן של משתנה בתור HTML בתוך קומפוננטה. בגלל שהצוות של ריאקט ידע שאנשים הולכים להצטרך את המנגנון הזה ולהשתמש בו, הם בחרו להוסיף את האזהרה בצורה שאי אפשר לברוח ממנה, כחלק משם הפונקציה.

השוו את זה לפונקציה toJS של Immutable.JS - הפונקציות fromJS ו toJS משמשות להמרת מבנה נתונים ממבנה של Immutable JS למבנה רגיל של JavaScript, המרה שמצריכה סריקת עומק של כל מבנה הנתונים והעתקת כל הנתונים. אלה פונקציות שאם תשתמשו בהן יהרגו את הביצועים של היישום שלכם, ובחיבור לריאקט עושות נזק כפול כי הן מקלקלות את ה Referential Equality וגורמות לזה שצריך לרנדר מחדש את כל הקומפוננטות שלנו (כי אנחנו לא יודעים מה באמת השתנה).

מה שיותר גרוע הוא של Immutable.JS יש למעשה שתי פונקציות המרה: האחת נקראת toJS והשניה toJSON, עם הבדל קריטי ביניהן. הפונקציה toJS מבצעת העתקה עמוקה ולעומתה toJSON מבצעת העתקה שטחית רק של הרמה הראשונה באוביקט.

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