#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
4 min read
•Question 11 of 47easy

What are Client Components in Next.js?

Understanding the "use client" directive.

What You'll Learn

  • When to use client components
  • "use client" directive
  • Best practices

Client Components

code.txtTSX
'use client';

import { useState } from 'react';

export default function Counter() {
  const [count, setCount] = useState(0);

  return (
    <button onClick={() => setCount(count + 1)}>
      Count: {count}
    </button>
  );
}

When to Use Client Components

NeedComponent Type
useState, useEffectClient
onClick, onChangeClient
Browser APIsClient
Static contentServer
Data fetchingServer
Backend resourcesServer

Composition Pattern

code.txtTSX
// Server Component (default)
import ClientButton from './ClientButton';

export default async function Page() {
  const data = await fetchData(); // Server-side

  return (
    <div>
      <h1>{data.title}</h1>
      <ClientButton /> {/* Interactive part */}
    </div>
  );
}

// ClientButton.tsx
'use client';
export default function ClientButton() {
  return <button onClick={() => alert('Hi')}>Click</button>;
}

Boundary Rules

code.txtTSX
'use client';

// Everything imported here becomes client
import ServerComponent from './ServerComponent'; // Now client!

// Pass server components as children instead
export default function ClientWrapper({ children }) {
  return <div onClick={...}>{children}</div>;
}