0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

# Next.jsのベストプラクティス(コンポーネント編)

Posted at

Next.jsのベストプラクティス(コンポーネント編)

まずコンポーネントって何?

コンポーネントとはアプリを構成する部品のことです。Webサイトはいろいろな部品から成り立っており、コンポーネント化することでその部品を再利用することができます。

Next.jsでは部品が作られる場所が重要

  • クライアント側なのか?サーバー側なのか?

スクリーンショット 2024-10-27 15.19.44.png

クライアント側はサーバー側にデータが欲しいとリクエストを送ります。Next.jsはサーバー側(サーバー側に近いクライアント)とクライアント側(クライアント側に近いクライアント)があり、サーバーに近いことでデータのやり取りがしやすいです。またクライアント側で画面を切り替えるだけの時はサーバーとやり取りがあまりないです。この2つの場合をどのようにコードに落とし込んだらいいのかを説明します。

Server Component

Server Componentを使うときには、デフォルトでServer Componentになります。

ユースケース

  • 非同期処理を使うとき。サーバーからリクエストを送る場合、Server Componentではasync/awaitなどを使うことが可能です。

Client Component

Client Componentを使うときは、ファイルの先頭に"use client"をつけます。Client Componentはあまり使わない方がいいです。

ユースケース

  • Hooksを使う時useState, useEffect, useRefなど、これらはクライアント側で状態を管理するため、サーバー側では管理できないものです。
  • イベントハンドラーを使う時onClick, onChangeなどはクライアント側で動くもので、サーバーとは関係のない動きをします。
  • ブラウザーのAPIを利用する時localStorage / sessionStorage, window / documentを使う時です。
  • クライアント操作が多い時:フォームコンポーネント、検索コンポーネント、タブ切り替えやハンバーガーメニュー開閉(真偽値)など。

注意点:Client Boundary

  • Client Componentの子コンポーネントは自動的にClient Componentになります。そのため、意図しないClient Componentに注意が必要です。 

→対策:Compositionパターンで回避できます。

ベストプラクティス

  • サーバーコンポーネントを積極的に使う。クライアントコンポーネントは控えめに!
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?