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

السؤال

نشر

أقوم بإستخدام lint في مشروع react ويظهر لي الخطأ التالي:

error    JSX props should not use arrow functions        react/jsx-no-bind

وأعتقد أن هنا سبب المشكلة (في onClick):

{this.state.people.map(tile => (
  <span key={tile.img}>
    <Checkbox onCheck={() => this.selectPerson(tile)} />
                       
    <GridTile actionIcon={<IconButton onClick={() => this.handleDelete(tile)}><Delete color="red"/></IconButton>}>
      <img onClick={() => this.handleOpen(tile.img)} src={tile.img} />
    </GridTile>
  </span>
))}

هل من الخطأ أن أستخدم inline arrow functions في JSX props؟ وإن كان كذلك ما هي الطريقة الأفضل لأمر كهذا؟

Recommended Posts

  • 0
نشر

هذا النمط يؤذي ال performance لأن الدالة سيتم إنشاؤها في كل مرة مع كل render وبالتالي في حالتك سيتم إنشاء المكون IconButton - Checkbox - img دائماً مع كل render ولحل هذه المشكلة فقط قم بالإشارة إليها هكذا 
 

selectPerson = tile => {
	// قم بعمل ما تريد
}

handleDelete = tile => {
	// قم بعمل ما تريد
}

handleOpen = img => {
 // قم بعمل ما تريد
}


{this.state.people.map(tile => (
  <span key={tile.img}>
    <Checkbox onCheck={this.selectPerson(tile)} />
                       
    <GridTile actionIcon={<IconButton onClick={this.handleDelete(tile)}><Delete color="red"/></IconButton>}>
      <img onClick={this.handleOpen(tile.img)} src={tile.img} />
    </GridTile>
  </span>
))}

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...