העברת props למסלולים מקבילים בnextJS - איך?
-
@nach האם הסתדרת כבר? יש לי תשובה אבל עם התנצלות מראש: אין לי כמעט נסיון בריאקט ואני כלל לא מכיר את nextjs
ועכשיו לתשובה: איך שאני מבין, השאלה פחות קשורה ל-nextjs ויותר לנושא הכללי של slots ב-React. ספריית nextjs משתמשת פה ב-pattern נפוץ - slots. הכוונה הוא, העברת חלקים של ה-markup של הקומפוננט בצורה דינאמית דרך prop.
השאלה שלך הוא איך להעביר ל-slot משתני state רלוונטיים.
כאשר מנסחים את השאלה בצורה זו אפשר יותר בקלות למצוא תשובות ברשת
מה שהעליתי בחכתי בנושא:
בוויו slots הם "אזרח מדרגה ראשונה" (first class citizen), כלומר, ה-pattern מוכר ונתמך ישירות על ידי הפריימוורק, בריאקט לא כל כך (יש הצעה פה להוסיף תמיכה לזה. בינתיים לא התקבלה), אבל עדיין אפשר להשתמש ב-pattern בצורה די קלה.
הנה כתבה על הנושא
עם התייחסות מפורשת לשאלה שלך בקטע זה
(התשובה בקצרה:useContext
)
מקווה שזה עוזר -
עדכון חשוב: עכשיו ראיתי את זה בתיעוד של nextjs
Sharing data between components
When fetching data on the server, there may be cases where you need to share data across different components. For example, you may have a layout and a page that depend on the same data.
Instead of using React Context (which is not available on the server) or passing data as props, you can use fetch or React's cache function to fetch the same data in the components that need it, without worrying about making duplicate requests for the same data. This is because React extends fetch to automatically memoize data requests, and the cache function can be used when fetch is not available.
Passing data between a parent layout and its children is not possible. However, you can fetch the same data in a route more than once, and React will automatically dedupe the requests without affecting performance.
עיין עוד:
-
תודה @yossiz , מעריך את הזמן שהקדשת בשביל לבדוק את הנושא.
אכן זו אופציה טובה להשתמש בcontext, אך אני רציתי שלא לגרום לכל הילדים להתרנדר בצד לקוח (שימוש בcontext מתאפשר בקומפוננטות לקוח בלבד).
מה שעשיתי בסוף שוויתרתי על המבנה של הנתיבים מקבילים, והשתמשתי בקומפוננטות רגילות שמרונדרות לתוך דף ראשי.
(ומקבלות פרופס כרגיל)
שוב תודה