پراپس چیست؟

پراپس (Props) راهی برای انتقال داده از یک کامپوننت والد به فرزند است.

این داده‌ها فقط قابل خواندن هستند و می‌توانند انواع مختلفی مانند رشته، عدد، آرایه، شیء یا حتی تابع داشته باشند.

نکته: props در واقع مخفف properties به معنای «ویژگی‌ها» است.

پراپس چطور کار می‌کند؟

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

<Greeting name="PNLdev" />

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

function Greeting(props) {
  return <h1>Hello، {props.name}!</h1>;
}

نکته: استفاده از نام‌های دقیق و مرتبط برای پراپس‌ها، باعث می‌شود کد شما خواناتر و قابل‌فهم‌تر باشد.

انواع پراپس

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

  • رشته (string):
<Greeting name="PNLdev" />

function Greeting({ name }) {
  return <h1>Hello، {name}!</h1>
}

نکته: با استفاده از Destructuring در پارامترهای تابع، می‌توانید به‌جای props.name، مستقیماً از { name } استفاده کنید.

  • عدد (number):
<Counter count={5} />

function Counter({ count }) {
  return <p>{count}!</p>
}
  • بولین (boolean):
<Status online={true} />

function Status({ online }) {
  return (
    <p>online: {online}!</p>
  );
}
  • شیء (object):
<Profile info={{name: "Nima", age: 19}} />

function Profile({ info }) {
  return (
    <p>Name: {info.name}!</p>
    <p>age: {info.age}!</p>
  );
}
  • آرایه (array):
<ColorList colors={["red", "green", "blue"]} />

function ColorList({ colors }) {
  return (
    <ul>
      {colors.map((color, index) => (
        <li key={index}>{color}</li>
      ))}
    </ul>
  );
}
  • تابع (function):
<CustomButton handleClick={() => alert("Clicked!")} />

function CustomButton({ handleClick }) {
  return <button onClick={handleClick}>Click me!</button>
}

ترکیب چند پراپس

می‌توانید چند پراپس را به طور همزمان به یک کامپوننت فرستاد:

<Student name="رضا" grade={18} present={true} />

function Student({ name, grade, present }) {
  return (
    <div>
      <p>Name: {name}</p>
      <p>Grade: {grade}</p>
      <p>Present: {present}</p>
    </div>
  );
}

پراپس پیشفرض

در صورتی که پراپسی به فرزند ارسال نشود، می‌توان مقداری پیشفرض برای آن در نظر گرفت:

<Greeting /> // Hello, Guest
<Greeting name="PNLdev" /> // Hello, PNLdev

function Greeting({ name = "Guest" }) {
  return <h1>Hello، {name}!</h1>;
}

خلاصه درس

تمرین


مشاهده پاسخ
توسعه دهندگان
نیما عراقی