اذهب إلى المحتوى
  • 0

كيف يمكنني استخدام عدة مراجع لمجموعة من العناصر ذات الخطافات؟

Rayden Storm

السؤال

أنا أتساءل عن كيفية استخدام مراجع لعدة عناصر دينامكيا مثال هكذا 

const { useRef, useState, useEffect } = React;

const App = () => {
  const elRef = useRef();
  

  return (
    <div>
      {data && data.posts.map((post) => (
        <div ref={elRef} >
           {post.tilte}
        </div>
      ))}
    </div>
  );
};

لكن في المثال الذي أرفقته هو مرجع واحد لعدة عناصر وانا اريد كل عنصر يمتلك مرجع خاص به دينامكيا

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يمكنك عمل ذلك بأن تقوم بعمل array of refs وليس مرجع واحد كالآتي 
 

const { useRef, useState, useEffect, createRef } = React;

const App = () => {
  // const elRef = useRef();
  const dataRefs = useRef(data.posts.map(() => createRef())); // مصفوفة من ال مراجع
  

  return (
    <div>
      {data && data.posts.map((post، index) => (
        <div ref={elementsRef.current[index]} > // هنا نستخرج المرجع المخصص لكل عنصر بناء على ال index
           {post.tilte}
        </div>
      ))}
    </div>
  );
};

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكننا تحقيق هذا عن طريق استخدام useRef مع createRef.

const data = {
  posts: [
    { title: 'كورس جافاسكريبت' },
    { title: 'كورس علوم الكمبيوتر' }
  ]
};

/**
 * سنقوم بكتابة مكون يطبع عناوين المقالات وبه مدخل نصي
 * .وزر لتغيير لون العناوين
 */
const App = () => {
  // .نستخدمها بالطريقة العادية للحصول على قيمة اللون
  const colorRef = React.useRef(null);

  // .هنا سنقوم بحفظ المراجع للمقالات
  // .ستلاحظ هنا ان قيمة المرجع هي مصفوفة من المراجع
  const references = React.useRef(
    data.posts.map(() => React.createRef())
  );

  // .دالة بسيطة للحصول على اللون ونداء العناصر لكل مرجع
  const changeColor = color => {
    // .لاحظ كيف يتم الوصول لمرجع كل مقالة
    references.current.forEach(ref => {
      ref.current.style.color = color;
    });
  };

  return (
    <div>
      {
        data && data.posts.map((post, id) => (
          <div ref={references.current[id]}>
            <h1>{post.title}</h1>
          </div>
        ))
      }
      <input ref={colorRef} type="text" placeholder="#AEF266" />
      <button onClick={() => {
          changeColor(colorRef.current.value);
      }}>تغيير اللون</button>
    </div>
  );
};

ReactDOM.render(
  <App />,
  document.getElementById('root')
);

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...