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

إستعمال find في react js

محمود_سعداوي

السؤال

قمت بدالة أريد من خلالها إرجاع عنصر محدد (الذي قمت بالضغط عليه)

المشكل أن النتيجة تكون دائما أول عنصر من المصفوفة

const noteClicked = () => {
    setCreating(false)
    let selectedNote = notes.find((note,i)=> note.id === notes[i].id)
    console.log(selectedNote)
  }

شكرا جزيلا.

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

Recommended Posts

  • 0

يحدث ذلك لأن الشرط الذي كتبته داخل الـ find :

note.id === notes[i].id

يكون صحيحاً من اجل اول عنصر في المصفوفة دائماً، ليس هذا فقط بل إنه صحيح لكل عناصر المصفوفة.

ولأن الوظيفة find مصممة لتعيد اول عنصر يحقق الشرط فلذلك تعيد العنصر الأول دائماً.

ولحل المشكلة يجب ان تحصل على الـ id بطريقة مختلفة، مثل إضافة الوظيفة التي تريدها عند انشاء العنصر وإضافة الـ id الخاص به لهذه الوظيفة كالتالي :

Notes?.map(note => (
	<dev onClick = {() => noteClicked(note.id) }> 
  		{note.text}
	</dev>
))

const noteClicked = (id) => {
    setCreating(false)
    let selectedNote = notes.find((note,i)=> note.id === id)
    console.log(selectedNote)
}

 

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

  • 0
بتاريخ 4 دقائق مضت قال عمر قره محمد:

يحدث ذلك لأن الشرط الذي كتبته داخل الـ find :


note.id === notes[i].id

يكون صحيحاً من اجل اول عنصر في المصفوفة دائماً، ليس هذا فقط بل إنه صحيح لكل عناصر المصفوفة.

ولأن الوظيفة find مصممة لتعيد اول عنصر يحقق الشرط فلذلك تعيد العنصر الأول دائماً.

ولحل المشكلة يجب ان تحصل على الـ id بطريقة مختلفة، مثل إضافة الوظيفة التي تريدها عند انشاء العنصر وإضافة الـ id الخاص به لهذه الوظيفة كالتالي :


Notes?.map(note => (
	<dev onClick = {() => noteClicked(note.id) }> 
  		{note.text}
	</dev>
))

const noteClicked = (id) => {
    setCreating(false)
    let selectedNote = notes.find((note,i)=> note.id === id)
    console.log(selectedNote)
}

 

هل يمكن استعمال filter.

 

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

  • 0
بتاريخ منذ ساعة مضت قال محمود سعداوي:

هل يمكن استعمال filter.

المشكلة ليست في الـ find ولكن في الشيء الذي تبحث عنه، حيث انك لا توفر الـ id الذي تبحث عنه في الوظيفة. وبالتالي فالـ filter ستعطيك مشكلة شبيهة بالسابق

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

  • 0
بتاريخ 22 دقائق مضت قال عمر قره محمد:

المشكلة ليست في الـ find ولكن في الشيء الذي تبحث عنه، حيث انك لا توفر الـ id الذي تبحث عنه في الوظيفة. وبالتالي فالـ filter ستعطيك مشكلة شبيهة بالسابق

شكرا

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...