پراپس‌ها در React – انتقال داده بین کامپوننت‌ها به‌صورت مقیاس‌پذیر

پراپس‌ها مکانیزم اصلی برای انتقال داده از یک کامپوننت به کامپوننت دیگر در React هستند. این مقاله نحوهٔ انتقال داده از کامپوننت والد به فرزند، استخراج کامپوننت‌های قابل استفاده مجدد مانند Item، و اهمیت ویژگی key در رندر لیست‌ها را بررسی می‌کند. همچنین به اصول تغییرناپذیری پراپس‌ها و مسیر یک‌طرفه داده اشاره می‌شود.

Reactpropscomponent hierarchydata passing

~2 min read · Updated Oct 21, 2025

مقدمه


در React، پراپس‌ها (props) برای انتقال داده از یک کامپوننت به کامپوننت دیگر استفاده می‌شوند. این روش جایگزین استفاده از متغیرهای سراسری است و امکان ساخت اپلیکیشن‌های مقیاس‌پذیر و قابل نگهداری را فراهم می‌کند.


انتقال داده به کامپوننت App


به‌جای استفاده از متغیر سراسری، داده‌ها را داخل کامپوننت App تعریف می‌کنیم:


const App = () => {
  const stories = [
    {
      title: 'React',
      url: 'https://react.dev/',
      author: 'Jordan Walke',
      num_comments: 3,
      points: 4,
      objectID: 0,
    },
    {
      title: 'Redux',
      url: 'https://redux.js.org/',
      author: 'Dan Abramov, Andrew Clark',
      num_comments: 2,
      points: 5,
      objectID: 1,
    },
  ];

  return (
    
); };

ارسال پراپس به کامپوننت فرزند


آرایهٔ stories را به کامپوننت List ارسال می‌کنیم:


<List list={stories} />

در کامپوننت List، داده‌ها از طریق پارامتر props دریافت می‌شوند:


const List = (props) => (
  
    {props.list.map((item) => (
  • {item.title}
  • ))}
);

استخراج کامپوننت Item


اکنون می‌توانیم کامپوننت Item را از List جدا کرده و هر آیتم را به آن ارسال کنیم:


const List = (props) => (
  
    {props.list.map((item) => ( ))}
); const Item = (props) => (
  • {props.item.title} {props.item.author} {props.item.num_comments} {props.item.points}
  • );

    اهمیت ویژگی key


    در رندر لیست‌ها، ویژگی key برای هر آیتم ضروری است تا React بتواند به‌صورت بهینه عناصر را مدیریت و به‌روزرسانی کند.


    پراپس‌ها تغییرناپذیر هستند


    پراپس‌ها فقط برای انتقال داده از والد به فرزند استفاده می‌شوند و نباید در کامپوننت فرزند تغییر داده شوند. آن‌ها یک ساختار دادهٔ یک‌طرفه و فقط خواندنی هستند.


    جمع‌بندی


    پراپس‌ها بخش مهمی از معماری React هستند. آن‌ها امکان انتقال داده بین کامپوننت‌ها، استخراج واحدهای قابل استفاده مجدد، و حفظ ساختار سلسله‌مراتبی را فراهم می‌کنند. با رشد پروژه، تسلط بر پراپس‌ها به شما کمک می‌کند تا کدی منظم، قابل نگهداری و قابل توسعه بنویسید.


    Written & researched by Dr. Shahin Siami

    Related Articles

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

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

    Continue

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

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

    Continue

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

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

    Continue

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

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

    Continue

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

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

    Continue

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

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

    Continue