تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ علیرضا بابایی
زمان Bind کردن یک متد در constructor
مجتبی سوری حل شده توسط مجتبی سوری

سلام

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

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

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

علیرضا بابایی ۲۲ دی ۱۳۹۹، ۱۳:۴۳

سلام

این موضوع کلا ارتباطی به 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 مشکل رو حل بکنی

بهترین پاسخ
مجتبی سوری ۲۲ دی ۱۳۹۹، ۱۵:۰۲