Rayden Storm نشر 11 مارس 2021 أرسل تقرير نشر 11 مارس 2021 مرحبا أحاول جعل العناوين دينامكيا بهذا الشكل مثلا ارسل عبر props 1,2,3,4,5,6 لكن بطريقة دينامكيا import React from 'react' export default function Dynamic(props) { return ( <div> <h{props.head}></h{props.head}> </div> ) } لكن لم يعمل معي ذلك هل ممن حل ? 1 اقتباس
1 Salah Eddin Beriani2 نشر 11 مارس 2021 أرسل تقرير نشر 11 مارس 2021 jsx لن يتعرف على المكون بتلك الطريقة لأنه في هذه الحالة أصبح مكون مصطنع وفي المكونات المصطنعة في jsx يجب ان تبدأ تسميتها بحرف كبير لذا فالحل بالنسبة لهذه الحالة هو أن تعين العنصر في متغير ثم بالامكان بعد ذلك استخدامه بهذه الطريقة import React from 'react' export default function Dynamic(props) { const DynamicHead = `h${props.head}`; return ( <div> <DynamicHead></DynamicHead> </div> ) } 1 اقتباس
0 أحمد حبنكة نشر 11 مارس 2021 أرسل تقرير نشر 11 مارس 2021 الطريقة الوحيدة لفعل ما تريد هي تعريف متحول وإسناد عنصر JSX المطلوب إليه حسب قيمة props هكذا: import React from 'react' export default function Dynamic(props) { let H = `h${props.head}`; return ( <div> <H>{content}</H> </div> ) } يمكنك تسمية المتحول H بأي شيء شرط أن يبدأ بحرف كبير، أكرر حرفاً كبيراً ﻷنه لن يعمل بدون ذلك. قد تسأل "ومتى كنا نستطيع استخدام string variable كما لو كان component" ؟!!!! هذه من مقدرات الـReact المخبأة أي أنها غير موجودة في docs ، أنا بصراحة جلبتها من جواب على هذا السؤال: https://stackoverflow.com/questions/33471880/dynamic-tag-name-in-jsx-and-react لا أدري كيف علم صاحب الجواب بوجود هكذا طريقة ولكنها طريقة فعالة وجميلة وليس فقط أنك استطعت اﻻختيار بين وسوم العناوين بل يمكنك تمرير أي html attributes تدعمها العناوين h1,2,3 إلخ ويمكنك تمرير onClick أيضاً وكل شيء تريده. بالطبع إن احتجت في المستقبل أن تختار بين عدة Components ديناميكياً بدلاً من اﻻختيار بين عدة وسوم يمكن إسناد تابع component إلى متحول يبدأ بحرف كبير، مثال للتوضيح: import React from "react"; function A(){ return (<h1>2</h1>); } function B(){ return (<p>hello</p>); } const components = { component1: A, component2: B } function C(props){ const CustomComponent = components[`component${props.number}`]; return <CustomComponent /> } المهم ألا تنسى قاعدة البدء بحرف كبير ﻷن React يترجم أي شيء لا يبدأ بحرف كبير إلى وسم html ونحن لا نريد ذلك في الحالات أعلاه. 2 اقتباس
السؤال
Rayden Storm
مرحبا
أحاول جعل العناوين دينامكيا بهذا الشكل مثلا ارسل عبر props 1,2,3,4,5,6 لكن بطريقة دينامكيا
لكن لم يعمل معي ذلك هل ممن حل ?
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.