اسکریپت‌های npm و اولین کامپوننت React – اجرای پروژه، ساخت تولیدی، و درک ساختار کامپوننت‌ها

در این مقاله، ابتدا با اسکریپت‌های npm در فایل package.json آشنا می‌شویم که برای اجرای، ساخت، و بررسی پروژه React استفاده می‌شوند. سپس اولین کامپوننت React را بررسی می‌کنیم که در فایل src/App.jsx قرار دارد. با ساده‌سازی این کامپوننت، مفاهیم پایه‌ای مانند JSX، تابع کامپوننت، و متغیرهای داخلی و خارجی را مرور می‌کنیم.

npmاسکریپتکامپوننت-ReactJSX

~2 دقیقه مطالعه · آخرین به‌روزرسانی ۲۹ مهر ۱۴۰۴

اسکریپت‌های npm در React


پس از آشنایی با ساختار فایل‌ها، حالا نوبت به بررسی اسکریپت‌های موجود در فایل package.json می‌رسد. این اسکریپت‌ها در بخش scripts تعریف شده‌اند و معمولاً شامل موارد زیر هستند:


"dev": "vite",
"build": "vite build",
"lint": "eslint .",
"preview": "vite preview"

برای اجرای هر اسکریپت، از دستور npm run <script> استفاده می‌کنیم:


  • npm run dev: اجرای پروژه به‌صورت محلی
  • npm run lint: بررسی خطاهای نگارشی و ساختاری کد
  • npm run build: ساخت پروژه برای انتشار نهایی
  • npm run preview: مشاهده نسخهٔ تولیدی پس از اجرای build

توجه داشته باشید که npm run preview فقط پس از اجرای npm run build قابل استفاده است.


اولین کامپوننت React


در فایل src/App.jsx اولین کامپوننت React تعریف شده است. این کامپوننت در واقع یک تابع جاوااسکریپت است که با حرف بزرگ شروع می‌شود (PascalCase) و به‌عنوان function component شناخته می‌شود.


نسخهٔ ساده‌شده برای شروع:


function App() {
  return (
    

Hello React

); } export default App;

برای شروعی ساده، می‌توان فایل‌های App.css و index.css را خالی کرد تا بدون استایل‌های پیش‌فرض کار کنیم.


نکات کلیدی در کامپوننت‌ها


  • کامپوننت‌ها باید با حرف بزرگ شروع شوند تا توسط React به‌عنوان کامپوننت شناخته شوند.
  • در ابتدا کامپوننت‌ها پارامتر ندارند، اما در ادامه با props آشنا خواهیم شد.
  • کدی که کامپوننت بازمی‌گرداند شبیه HTML است، اما در واقع JSX است — ترکیبی از جاوااسکریپت و HTML.

متغیرهای داخلی و خارجی


متغیرهایی که داخل تابع تعریف می‌شوند، در هر بار اجرای تابع دوباره تعریف می‌شوند. اگر متغیری به داده‌های داخلی تابع وابسته نیست، بهتر است آن را خارج از تابع تعریف کنیم:


const title = 'React';
function App() {
  return (
    

Hello {title}

); } export default App;

این روش باعث بهینه‌سازی عملکرد و جلوگیری از تعریف مجدد متغیرها در هر بار رندر می‌شود.


جمع‌بندی


با استفاده از اسکریپت‌های npm می‌توان پروژه React را اجرا، بررسی، و آمادهٔ انتشار کرد. همچنین با تعریف کامپوننت‌ها به‌صورت تابعی، می‌توان ساختار ساده و قابل‌فهمی برای شروع یادگیری React ایجاد کرد. در ادامه، با مفاهیم JSX، props، و مدیریت وضعیت بیشتر آشنا خواهیم شد.


نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

فرم‌ها در React – ارسال داده با onSubmit و action در فرم‌های جستجو

فرم‌ها بخش جدایی‌ناپذیر هر اپلیکیشن مدرن هستند. در این مقاله، نحوهٔ ساخت فرم جستجو در React را بررسی می‌کنیم. ابتدا از onSubmit برای مدیریت ارسال فرم استفاده می‌کنیم و سپس با معرفی ویژگی action، فرم را به رفتار بومی HTML نزدیک‌تر می‌کنیم. این ساختار باعث افزایش خوانایی، قابلیت استفاده با صفحه‌کلید، و آمادگی برای نسخه‌های آیندهٔ React می‌شود.

ادامه

کتابخانه‌های شخص ثالث در React – استفاده از axios و async/await برای دریافت داده‌ها

در این مقاله، نحوهٔ جایگزینی fetch با کتابخانهٔ axios برای دریافت داده‌ها از API در React را بررسی می‌کنیم. سپس با استفاده از async/await و بلوک try/catch، کد دریافت داده‌ها را خواناتر و قابل مدیریت‌تر می‌کنیم. این روش‌ها باعث افزایش سازگاری با مرورگرهای قدیمی، بهبود تست‌پذیری، و کاهش پیچیدگی کد می‌شوند.

ادامه

دریافت صریح داده‌ها در React – کنترل درخواست‌های API با دکمه تأیید

در پیاده‌سازی اولیه، هر بار که کاربر در فیلد جستجو تایپ می‌کرد، درخواست جدیدی به API ارسال می‌شد. این مقاله نحوهٔ تغییر این رفتار به دریافت صریح داده‌ها را آموزش می‌دهد؛ به‌طوری‌که فقط با کلیک روی دکمهٔ تأیید، درخواست به API ارسال شود. با تعریف دو وضعیت مجزا برای searchTerm و url، و استفاده از useCallback و useEffect، کنترل کامل بر زمان ارسال درخواست فراهم می‌شود.

ادامه

وضعیت‌های غیرممکن در React – مدیریت پیش‌بینی‌پذیر وضعیت با useReducer

استفاده هم‌زمان از چند useState برای مدیریت وضعیت‌های مرتبط می‌تواند منجر به وضعیت‌های غیرممکن و باگ‌های پنهان شود. این مقاله نشان می‌دهد چگونه با ترکیب وضعیت‌های مرتبط در یک useReducer واحد، می‌توان از بروز چنین مشکلاتی جلوگیری کرد. با تعریف یک ساختار وضعیت پیچیده شامل داده، بارگذاری و خطا، و استفاده از اکشن‌های مشخص، مدیریت وضعیت در React پیش‌بینی‌پذیرتر و قابل اطمینان‌تر می‌شود.

ادامه

مدیریت پیشرفته وضعیت در React – استفاده از useReducer برای انتقال‌های پیچیده

در حالی که useState برای مدیریت وضعیت‌های ساده مناسب است، هوک useReducer در React راه‌حلی مقیاس‌پذیر برای مدیریت وضعیت‌های پیچیده و وابسته ارائه می‌دهد. این مقاله نحوهٔ مهاجرت وضعیت لیست داستان‌ها از useState به useReducer را بررسی می‌کند، و نشان می‌دهد چگونه با تعریف اکشن‌هایی مانند SET_STORIES و REMOVE_STORY می‌توان منطق وضعیت را به‌صورت متمرکز و خوانا مدیریت کرد.

ادامه

رندر شرطی در React – نمایش وضعیت بارگذاری و خطا هنگام دریافت داده‌های غیرهمزمان

در React، رندر شرطی ابزاری قدرتمند برای کنترل نمایش رابط کاربری بر اساس وضعیت‌های مختلف است. این مقاله نحوهٔ نمایش پیام «در حال بارگذاری…» هنگام دریافت داده‌های غیرهمزمان، و پیام خطا در صورت شکست دریافت داده را بررسی می‌کند. با استفاده از useState و useEffect، وضعیت‌های isLoading و isError را مدیریت کرده و با استفاده از عملگرهای منطقی و ternary، رندر شرطی را پیاده‌سازی می‌کنیم.

ادامه