• 1399/05/07

استفاده متد Find و Filter برای DeletePerson :

سلام استاد 

وقتتون بخیر

 

استاد در قسمت  KeysAndDeletePerson شما فرمودید که برای پاک کردن از Filter استفاده بشه سوال من اینه که آیا بطور مثال اگر ما در لیستمون 1000 نفر داشته باشیم با فراخوانی این متد دوباره 999 نفر رو توی لیست کپی می کنیم به جز 1 نفر ولی اگر از Find  استفاده کنیم همون 1 نفر رو حذفش می کنیم  آیا منطقی هست و من درست فهمیدم؟؟؟ و اینکه شما فرمودید ما از setstate استفاده میکنیم برای ویرایش چرا باید از آرایه کپی بگیریم من بدون کپی به مشکل بر نخوردم

 

کد پیشنهادی شما

const persons = [...this.state.persons];  
const deletPerson = persons.filter((p) => p.id !== id );
this.setState({persons: deletPerson});                

کد بدون کپی از آرایه و با استفاده از Find

const {persons} = this.state;  
this.setState(persons.splice(persons.findIndex(p => p.id === id),1));      

 

ممنون از آموزشهای  بسیار عالی و فن بیانتون

مچکر 

  • 1399/05/12
  • ساعت 13:49

سلام دوست من

بله حرف شما صحیح هست در پروژه های بزرگ نباید به این صورت انجام بشه و منطق اصلی سمت سرور خواهد بود

در این پروژه کوچک صرفا برای یادگیری شما دوستان عزیز به این صورت آموزش داده شده.

در روش استفاده از متد splice روش درستی نیست چونکه آرایه جدید برگشت نمیده و مستقیم آرایه اصلی رو تغییر خواهد داد.

هیچوقت نباید state به صورت مستقیم تغییر داده بشه و از اونجایی که آرایه ها نوعشون ارجاعی هست باید یک کپی ازش بگیریم و بعد تغییرات اعمال بشه.

 


logo-samandehi