زمان Bind کردن یک متد در constructor

پرسیده شده
فعالیت 1207 روز پیش
دیده شده 435 بار
0

سلام

استاد چه زمانی ما یک متد رو توی constructor  

bind می کنیم؟ وقتی بخواییم state رو تغییر بدیم؟

فایل پیوست

3
حذف شده

سلام

این موضوع کلا ارتباطی به react و state نداره و برمیگرده به خود زبان JS

زمانی یک تابع رو به صورت رفنس استفاده بکنیم مثل همین موردی که در کامپوننت های react داریم اون تابع مقدار this رو درست تشخصی نمیده و اصطلاحا مقدار this رو فراموش میکنه

مثلا زیر رو اگر توجه کنی موضوع یکمی شفاف تر میشه

const user = {
    firstName: 'jone',
    lastName: 'doe',
    fullName: function () {
        return `${this.firstName} ${this.lastName}`;
    }
};

const fullName = user.fullName
console.log(fullName()); // The function gets invoked at the global scope
// expected output: undefined undefined

const fullName2 = user.fullName.bind(user);
console.log(fullName2());
  // expected output: jone doe

اگرم فعلا باهاش مشکل داری خیلی نمیخواد خودت رو درگیرش بکنی و به مرور موضوع شفاف تر میشه! 

هر جایی که دیدی react بهت ارور داد که یک مقداری undefined هست در صورتی که اون رو تعریف کردی، یکی از مواردی که باید بررسی بکنی همین موضوع هست

 

بیشترین جایی که در react این موضوع دیده میشه زمانی هست که یک تابع رو به عنوان props پاس میدی و داخل اون تابع از this استفاده کردی! در این حالت میتونی با bind مشکل رو حل بکنی

فایل پیوست

مجتبی سوری

توسط

مجتبی سوری

22 دی 99

0
حذف شده

این bind بیرون از state قرار میگیره؟ میتونه داخل state هم باشه؟

فایل پیوست

علیرضا بابایی

توسط

علیرضا بابایی

22 دی 99