کامپوننت های کلاسی در React
در این بخش به بررسی کامپوننت های کلاسی در React می پردازیم، کامپوننتها یکی از اجزای اصلی در ساختار React هستند که به توسعهدهندگان امکان ساخت رابط کاربری پویا و تعاملی را میدهند. در React، دو نوع اصلی کامپوننت وجود دارد: کامپوننتهای تابعی و کامپوننتهای کلاسی. هرچند کامپوننتهای تابعی با ظهور هوکها محبوبتر شدهاند، اما کامپوننتهای کلاسی همچنان نقش مهمی در پروژههای مختلف دارند، بهخصوص زمانی که نیاز به مدیریت پیچیده وضعیت (State) یا چرخه حیات کامپوننتها وجود دارد.
کامپوننتهای کلاسی در React از مفهوم کلاسها در زبان JavaScript استفاده میکنند که با معرفی آنها در ECMAScript 6 (ES6) محبوبیت یافت. این نوع کامپوننتها به توسعهدهندگان امکان میدهند تا با استفاده از متدها، وضعیت داخلی (State) را مدیریت کرده و تعاملات پیچیدهتری را به پروژههای خود اضافه کنند. در این مقاله، به طور جامع به کامپوننتهای کلاسی، ساختار آنها، مزایا و معایب، و نحوه استفاده از آنها میپردازیم.
ساختار کامپوننتهای کلاسی
کامپوننتهای کلاسی با استفاده از کلمه کلیدی class
در JavaScript تعریف میشوند و باید از کلاس React.Component
یا React.PureComponent
ارثبری کنند. ساختار اصلی یک کامپوننت کلاسی شامل یک متد ضروری به نام render
است که JSX را برای نمایش خروجی بازمیگرداند.
نمونه کد: تعریف یک کامپوننت کلاسی ساده
توضیحات کد
- ارثبری از
React.Component
: این کار کامپوننت را بهعنوان یک کامپوننت کلاسی تعریف میکند. - متد
render
: این متد وظیفه بازگرداندن JSX برای رندر شدن در صفحه را دارد. - پراپها (Props): اطلاعات ورودی به کامپوننت هستند که از طریق ویژگیهای JSX منتقل میشوند.
مدیریت وضعیت (State) در کامپوننتهای کلاسی
یکی از مزیتهای کلیدی کامپوننتهای کلاسی، توانایی مدیریت وضعیت داخلی است. وضعیت یا state
، اطلاعاتی است که درون کامپوننت ذخیره شده و ممکن است در طول زمان تغییر کند.
نمونه کد: مدیریت وضعیت در کامپوننت کلاسی
توضیحات کد
- سازنده (Constructor): برای مقداردهی اولیه
state
استفاده میشود. - متد
setState
: برای بهروزرسانی وضعیت به کار میرود. - متدهای سفارشی: مانند
increment
، که برای تغییر وضعیت ایجاد شده است.
چرخه حیات کامپوننتهای کلاسی
چرخه حیات کامپوننتهای کلاسی به سه بخش اصلی تقسیم میشود:
- Mounting: زمان اضافه شدن کامپوننت به DOM.
- Updating: زمانی که وضعیت یا پراپها تغییر میکنند.
- Unmounting: زمان حذف شدن کامپوننت از DOM.
متدهای رایج چرخه حیات
componentDidMount
: بلافاصله بعد از رندر شدن کامپوننت اجرا میشود.componentDidUpdate
: پس از بهروزرسانی وضعیت یا پراپها اجرا میشود.componentWillUnmount
: قبل از حذف کامپوننت از DOM اجرا میشود.
نمونه کد: استفاده از متدهای چرخه حیات
توضیحات کد
- در متد
componentDidMount
، یک تایمر تنظیم شده است. - در
componentWillUnmount
، تایمر متوقف میشود. - متد
tick
وضعیت را بهروزرسانی میکند تا زمان جدید نمایش داده شود.
مقایسه با کامپوننتهای تابعی
کامپوننتهای کلاسی و تابعی هر دو برای ساخت رابط کاربری استفاده میشوند اما تفاوتهایی دارند:
- سادگی: کامپوننتهای تابعی به دلیل ساختار سادهتر، مناسبتر هستند.
- عملکرد: با ظهور هوکها، کامپوننتهای تابعی عملکرد مشابه کامپوننتهای کلاسی را ارائه میدهند.
- چرخه حیات: هوکهایی مانند
useEffect
جایگزین متدهای چرخه حیات شدهاند.
مزایا و معایب کامپوننتهای کلاسی
مزایا
- پشتیبانی از وضعیت داخلی.
- امکان استفاده از متدهای چرخه حیات.
- مناسب برای پروژههای قدیمی.
معایب
- پیچیدگی بیشتر نسبت به کامپوننتهای تابعی.
- استفاده کمتر در پروژههای جدید به دلیل ظهور هوکها.
کامپوننتهای کلاسی در React ابزار قدرتمندی برای ساخت رابط کاربری پیچیده هستند، بهویژه در پروژههایی که نیاز به مدیریت وضعیت پیچیده یا استفاده از متدهای چرخه حیات دارند. با این حال، استفاده از کامپوننتهای تابعی و هوکها در پروژههای جدید توصیه میشود، چرا که سادگی و کارایی بیشتری ارائه میدهند. در نهایت، انتخاب بین این دو نوع کامپوننت به نیازهای پروژه و ترجیحات تیم توسعه بستگی دارد.
منابع
- React Documentation – Class Components
- MDN Web Docs – JavaScript Classes
آیا این مطلب برای شما مفید بود ؟