Day 92

React Components — Deep Dive

14 min
JavaScript 100 Days

React ka power component reusability aur composition mein hai. Chhote, focused components banao aur unhe compose karke complex UIs banao — yahi React ka philosophy hai.

Props & Children

Data pass karo aur components compose karo.

Card.jsx
jsx
// Reusable Card component
function Card({ title, children, footer, className = "" }) {
  return (
    <div className={`card ${className}`}>
      {title && <div className="card-header"><h3>{title}</h3></div>}
      <div className="card-body">{children}</div>
      {footer && <div className="card-footer">{footer}</div>}
    </div>
  );
}

// Usage — compose karo
function UserProfile({ user }) {
  return (
    <Card
      title={user.name}
      footer={<button>Message</button>}
      className="user-card"
    >
      <img src={user.avatar} alt={user.name} />
      <p>{user.bio}</p>
      <TagList tags={user.skills} />
    </Card>
  );
}

// Render prop pattern
function DataFetcher({ url, render }) {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);
  
  useEffect(() => {
    fetch(url).then(r => r.json()).then(d => {
      setData(d);
      setLoading(false);
    });
  }, [url]);
  
  return render({ data, loading });
}

// Usage
<DataFetcher 
  url="/api/users" 
  render={({ data, loading }) => 
    loading ? <Spinner /> : <UserList users={data} />
  }
/>

🎯 Practice Challenge

Design system banao — Button, Input, Modal, Dropdown, Badge components. Sab ko reusable aur props-driven banao.