2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

React 18でのサーバーコンポーネント入門!クライアントとサーバーの最適なバランスを実現

Posted at

React 18の新機能であるサーバーコンポーネントを使って、パフォーマンスの最適化やSEOの改善を図りたいですか?この記事ではサーバーコンポーネントの基本から、具体的な使い方に至るまでを解説します。

目次

  1. サーバーコンポーネントとは何か?
  2. いつ使うのか?
  3. メリット
  4. 環境設定
  5. サンプルコード
  6. 注意点とトラブルシューティング

サーバーコンポーネントとは何か?

サーバーコンポーネントはReactの特定のコンポーネントをサーバー側でレンダリングするための新しい機能です。クライアントとサーバーの間で最適なバランスを取りながら、レスポンシブなインタラクションを提供します。

いつ使うのか?

  • リソースが重いコンポーネントの処理
  • SEOの改善
  • ユーザーエクスペリエンスの向上

メリット

  • パフォーマンス向上
  • 柔軟性
  • コード分割

環境設定

1. 環境のセットアップ

npm init
npm install react@alpha react-dom@alpha react-server@alpha

2. レンダリングパイプラインの設定

以下のコードはExpressを使用してサーバーコンポーネントをレンダリングする例です。

const express = require('express');
const { pipeToNodeWritable } = require('react-server-dom-webpack/writer');
const React = require('react');
const { renderToPipeableStream } = require('react-dom/server');

// ...

app.get('/', (req, res) => {
  const stream = renderToPipeableStream(<App />);
  res.setHeader('Content-Type', 'text/html');
  pipeToNodeWritable(stream, res);
});

サンプルコード

サーバーコンポーネントの例:

// MyComponent.server.js
import React from 'react';

function MyServerComponent() {
  return <div>これはサーバーコンポーネントです。</div>;
}

export default MyServerComponent;

注意点とトラブルシューティング

  • サーバーコンポーネントはクライアントサイドの状態やイベントハンドラーに直接アクセスできません。
  • 開発環境やフレームワークによってはサポートが限定的な場合があります。

この記事を通じて、Reactのサーバーコンポーネントを初めて試す方でも安心して取り組めるようになることを願っています。いいねやコメントは大歓迎です!何か質問があればお気軽にどうぞ!

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?