محمود سعداوي2 نشر 31 أكتوبر 2022 أرسل تقرير نشر 31 أكتوبر 2022 السلام عليكم. هل من توضيح حول إستعمال map في react js. حصلت لي لخبطة خاصة عند إستعمال props. مثال: const plantList = [ { name: 'monstera', category: 'classique', id: '1ed', isBestSale: true, light: 2, water: 3, cover: monstera }, { name: 'ficus lyrata', category: 'classique', id: '2ab', light: 3, water: 1, cover: monstera }, { name: 'pothos argenté', category: 'classique', id: '3sd', light: 1, water: 2, cover: monstera }, { name: 'yucca', category: 'classique', id: '4kk', light: 3, water: 1, cover: monstera }, { name: 'olivier', category: 'extérieur', id: '5pl', light: 3, water: 1, cover: monstera }, { name: 'géranium', category: 'extérieur', id: '6uo', light: 2, water: 2, cover: monstera }, { name: 'basilique', category: 'extérieur', id: '7ie', isBestSale: true, light: 2, water: 3, cover: monstera }, { name: 'aloe', category: 'plante grasse', id: '8fp', light: 2, water: 1, cover: monstera }, { name: 'succulente', category: 'plante grasse', id: '9vn', light: 2, water: 1, cover: monstera } ] {plantList.map(({id,cover,name,water,light}) => ( <PlantItem id={id} cover={cover} name={name} water={water} light={light} /> شكرا 1 اقتباس
0 Kais Hasan نشر 31 أكتوبر 2022 أرسل تقرير نشر 31 أكتوبر 2022 إن map هي تابع في javascript يقوم بأخذ كل عنصر من حاوية ما (مثلا list) و تطبيق تابع معين عليها، لصنع حاوية أخرى من نتيجة تطبيق التابع على كل عنصر من الحاوية الأولى. في مثالك هذا لديك list من الأغراض، و حسب ما يبدو لي فإن كل غرض يمثل نوع معين من الأزهار مع معلومات عنه. عندما قمت بتطبيق map على هذه ال list فإنك ستقوم بتحويل كل عنصر في ال list عن طريق تابع ستمرره لل map، التابع الذي قمت باستعماله سيأخذ غرض (حيث أن كل عنصر في المصفوفة هي غرض) و في ال javascript يمكننا أخذ خصائص معينة من الغرض باستعمال قوسين {} بالإضافة إلى الخصائص التي نريدها، بالتالي هنا نأخذ الخصائص id,cover,name,water,light، و نقوم ببناء مكون باستعمال قيم هذه الخصائص، أي سيتم إنشاء list جديدة تحوي على نتيجة تطبيق التابع الذي كتبته على كل غرض في ال list الأصلية التي لديك. 1 اقتباس
0 علي عبد محسن نشر 31 أكتوبر 2022 أرسل تقرير نشر 31 أكتوبر 2022 إذا كان هذا الكود هو نفسه الذي تستعمله فهو ينقصه بعض الأشياء لكي يعمل بشكل صحيح. أولاً: الدالة map تقوم بعمل loop على مصفوفة ما وتعيد لك مصفوفة أخرى يمكنك تصميمها كما تريد من خلال تضمين البيانات داخل html tags طالما أننا نعمل داخل React. حيث يمكنك تهيئة عناصر المصفوفة الخارجة مثلاً لتكون block من عناصر html قبل أن تعمل render لها. ثانياً: يجب أن تحتوي الحاوية الرئيسية للعناصر الراجعة من كل دورة من دورات map على attribute تسمى key تسند له قيمة فريدة من نوعها مثلاً index العنصر داخل المصفوفة أو المعرف الخاص به id حتى تتمكن react من تعقبه في DOM. 1 اقتباس
0 محمود سعداوي2 نشر 31 أكتوبر 2022 الكاتب أرسل تقرير نشر 31 أكتوبر 2022 بتاريخ 5 دقائق مضت قال Kais Hasan: إن map هي تابع في javascript يقوم بأخذ كل عنصر من حاوية ما (مثلا list) و تطبيق تابع معين عليها، لصنع حاوية أخرى من نتيجة تطبيق التابع على كل عنصر من الحاوية الأولى. في مثالك هذا لديك list من الأغراض، و حسب ما يبدو لي فإن كل غرض يمثل نوع معين من الأزهار مع معلومات عنه. عندما قمت بتطبيق map على هذه ال list فإنك ستقوم بتحويل كل عنصر في ال list عن طريق تابع ستمرره لل map، التابع الذي قمت باستعماله سيأخذ غرض (حيث أن كل عنصر في المصفوفة هي غرض) و في ال javascript يمكننا أخذ خصائص معينة من الغرض باستعمال قوسين {} بالإضافة إلى الخصائص التي نريدها، بالتالي هنا نأخذ الخصائص id,cover,name,water,light، و نقوم ببناء مكون باستعمال قيم هذه الخصائص، أي سيتم إنشاء list جديدة تحوي على نتيجة تطبيق التابع الذي كتبته على كل غرض في ال list الأصلية التي لديك. يعني قمنا بتعويض plantList.map((plant) => ( <PlantItem id = plant.id name = plant.name . . /> )) بتاريخ الآن قال محمود سعداوي: يعني قمنا بتعويض plantList.map((plant) => ( <PlantItem id = plant.id name = plant.name . . /> )) و أين سأضيف key في هذه الحالة 1 اقتباس
0 Kais Hasan نشر 31 أكتوبر 2022 أرسل تقرير نشر 31 أكتوبر 2022 بتاريخ 2 دقائق مضت قال محمود سعداوي: يعني قمنا بتعويض plantList.map((plant) => ( <PlantItem id = plant.id name = plant.name . . /> )) تماماً، لكن أولاً يجب عليك أن تبقي على الأقواس {} عندما تقوم بالإسناد، أي يجب أن تكتب id = {plant.id} و هكذا من أجل بقية المتحولات. ثانياً كما ذكر المدرب علي، هناك بعض التفاصيل التي يجب عليك مراعاتها مثل ال key و أن تضع هذه العناصر ضمن block معين، أي مثلاً مكون div أو Fragment. 1 اقتباس
0 محمود سعداوي2 نشر 31 أكتوبر 2022 الكاتب أرسل تقرير نشر 31 أكتوبر 2022 بتاريخ الآن قال Kais Hasan: تماماً، لكن أولاً يجب عليك أن تبقي على الأقواس {} عندما تقوم بالإسناد، أي يجب أن تكتب id = {plant.id} و هكذا من أجل بقية المتحولات. ثانياً كما ذكر المدرب علي، هناك بعض التفاصيل التي يجب عليك مراعاتها مثل ال key و أن تضع هذه العناصر ضمن block معين، أي مثلاً مكون div أو Fragment. حسنا هل يصح عمل الkey بهذه الطرقة <PlantItem key = {id} id={id} cover={cover} name={name} water={water} light={light} /> بتاريخ الآن قال محمود سعداوي: حسنا هل يصح عمل الkey بهذه الطرقة <PlantItem key = {id} id={id} cover={cover} name={name} water={water} light={light} /> مع العلم أن PlantItem هي <li key={id} className='lmj-plant-item'> <img src={cover} alt={`{name}cover`} className='lmj-plant-item-cover' /> {name} <div> <CareScale careType='water' scaleValue={water} /> <CareScale careType='light' scaleValue={light} /> </div> </li> 1 اقتباس
0 Kais Hasan نشر 31 أكتوبر 2022 أرسل تقرير نشر 31 أكتوبر 2022 بتاريخ 2 دقائق مضت قال محمود سعداوي: حسنا هل يصح عمل الkey بهذه الطرقة <PlantItem key = {id} id={id} cover={cover} name={name} water={water} light={light} /> نعم. 1 اقتباس
0 محمود سعداوي2 نشر 31 أكتوبر 2022 الكاتب أرسل تقرير نشر 31 أكتوبر 2022 بتاريخ 1 دقيقة مضت قال Kais Hasan: نعم. شكرا على التوضيح و المساعدة 1 اقتباس
السؤال
محمود سعداوي2
السلام عليكم.
هل من توضيح حول إستعمال map في react js.
حصلت لي لخبطة خاصة عند إستعمال props.
مثال:
شكرا
7 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.