プロのように React コンポーネントを書く: 初心者向けのブループリント

Linda Hamilton
リリース: 2024-10-18 18:39:03
オリジナル
385 人が閲覧しました

Write React Components Like a Pro: A Beginner’s Blueprint

プロのように React コンポーネントを書く: ゼロからヒーローまでの初心者ガイド


導入

React は、ユーザー インターフェイスを構築するための最も人気のある JavaScript ライブラリの 1 つです。初心者でも経験豊富な開発者でも、コンポーネントの作成と強化の技術を習得することが、スケーラブルなアプリケーションを構築する鍵となります。このガイドでは、React コンポーネントの作成、高次コンポーネント (HOC) によるコンポーネントの強化、データ取得のためのフックの使用、副作用の制御について知っておくべきことをすべて説明します。最後には、プロのように React アプリケーションを構築して構造化できるようになります。


React コンポーネントとは何ですか?

React コンポーネントは、本質的には、JSX (JavaScript の構文拡張) を使用して UI 要素を出力する JavaScript 関数またはクラスです。コンポーネントを使用すると、UI を独立した再利用可能な部分に分割できます。

簡単な機能コンポーネントの例を次に示します。

import React from 'react';

function WelcomeMessage() {
  return <h1>Welcome to React</h1>;
}

export default WelcomeMessage;
ログイン後にコピー
ログイン後にコピー

コンポーネントが重要な理由: コンポーネントは、React アプリケーションの構成要素です。これらは、複雑な UI をより小さく管理しやすい部分に分割するのに役立ちます。


高次コンポーネント (HOC) によるコンポーネントの強化

HOC とは何ですか?

高次コンポーネントは、コンポーネントを受け取り、新しい拡張コンポーネントを返す関数です。 HOC は、複数のコンポーネント間でロジックを再利用するために使用されます。

ログ機能を追加する HOC の例を次に示します。

function withLogging(WrappedComponent) {
  return function EnhancedComponent(props) {
    console.log('Component is rendering with props:', props);
    return <WrappedComponent {...props} />;
  };
}

// Usage
const WelcomeWithLogging = withLogging(WelcomeMessage);
ログイン後にコピー
ログイン後にコピー

この例では、withLogging HOC は WelcomeMessage コンポーネントをラップし、コンポーネントがレンダリングされるたびに props をログに記録します。これにより、元のコンポーネントを変更せずに、ログ記録や認証チェックなどの追加機能で既存のコンポーネントを強化できます。


フックを使用したデータのフェッチ

React の組み込みフックを使用すると、状態およびライフサイクル機能を機能コンポーネントに追加できます。データを取得するための最も重要なフックの 1 つは useEffect です。

データの取得例:

import React, { useState, useEffect } from 'react';

function DataFetcher() {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    fetch('https://jsonplaceholder.typicode.com/posts')
      .then((response) => response.json())
      .then((data) => {
        setData(data);
        setLoading(false);
      });
  }, []);

  if (loading) {
    return <div>Loading...</div>;
  }

  return (
    <ul>
      {data.map((item) => (
        <li key={item.id}>{item.title}</li>
      ))}
    </ul>
  );
}

export default DataFetcher;
ログイン後にコピー
ログイン後にコピー

以下のことが起こります:

  • useState は読み込み状態と取得したデータを管理します。
  • useEffect は、コンポーネントが最初にレンダリングされるときにデータをフェッチするために使用されます。
  • コンポーネントは、読み込み状態またはフェッチされたデータを条件付きでレンダリングします。

フックが重要な理由: useState や useEffect のようなフックを使用すると、特に機能コンポーネントにおいて、状態と副作用 (データのフェッチなど) の管理がはるかに簡単になります。


useEffect を使用した副作用の制御

React の useEffect フックは、API 呼び出し、タイマー、手動の DOM 操作などの副作用を処理するために重要です。

クリーンアップなしの影響:

すべてのエフェクトがクリーンアップを必要とするわけではありません。たとえば、コンポーネントのマウント時にデータを取得する場合、クリーンアップは必要ありません。これらのタイプの操作には useEffect を使用できます。

import React from 'react';

function WelcomeMessage() {
  return <h1>Welcome to React</h1>;
}

export default WelcomeMessage;
ログイン後にコピー
ログイン後にコピー

空の配列 ([]) は、このエフェクトが 1 回だけ実行されることを保証し、componentDidMount の動作を模倣します。

クリーンアップによる効果:

サブスクリプションやタイマーの設定などの特定の副作用では、メモリ リークを避けるためにコンポーネントがアンマウントされるときにクリーンアップが必要です。

例:

function withLogging(WrappedComponent) {
  return function EnhancedComponent(props) {
    console.log('Component is rendering with props:', props);
    return <WrappedComponent {...props} />;
  };
}

// Usage
const WelcomeWithLogging = withLogging(WelcomeMessage);
ログイン後にコピー
ログイン後にコピー

この例では、useEffect 内にタイマーを設定し、コンポーネントがアンマウントされたときに間隔をクリアするクリーンアップ関数を返します。

クリーンアップが重要な理由: クリーンアップを行わないと、コンポーネントが存在しなくなった後でもサブスクリプションや間隔などの効果が実行され続ける可能性があり、パフォーマンスの問題が発生する可能性があります。


アプリの組み立て

構成要素を確認したので、データを取得し、コンポーネントのレンダリングをログに記録し、データを表示する小さなアプリを組み立ててみましょう。

import React, { useState, useEffect } from 'react';

function DataFetcher() {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    fetch('https://jsonplaceholder.typicode.com/posts')
      .then((response) => response.json())
      .then((data) => {
        setData(data);
        setLoading(false);
      });
  }, []);

  if (loading) {
    return <div>Loading...</div>;
  }

  return (
    <ul>
      {data.map((item) => (
        <li key={item.id}>{item.title}</li>
      ))}
    </ul>
  );
}

export default DataFetcher;
ログイン後にコピー
ログイン後にコピー

この例では:

  • DataFetcher は API からデータを取得して表示します。
  • withLogging HOC は、DataFetcher をラップしてレンダリング サイクルをログに記録します。
  • App コンポーネントはすべてをアセンブルし、ヘッダーと DataFetcher によってフェッチされたデータを表示します。

よくある質問

JSX とは何ですか?

JSX は、HTML に似た JavaScript の構文拡張機能です。これにより、JavaScript 内に UI 要素を記述することができます。

useEffect を使用する理由

useEffect を使用すると、データのフェッチや機能コンポーネントでの DOM の操作などの副作用を処理できます。

高次コンポーネント (HOC) とは何ですか?

HOC は、コンポーネントを取得して拡張コンポーネントを返す関数であり、コンポーネント ロジックを再利用できます。


結論

このガイドでは、React コンポーネントを作成する際にゼロからヒーローになるために必要なすべてをカバーしました。基本コンポーネントの理解から、高次コンポーネントによるそれらの強化、useEffect による副作用の管理まで、スケーラブルで再利用可能なコンポーネントを構築するための強力な基盤が得られました。練習すると、これらの概念をマスターし、より高度な React アプリケーションを処理できるようになります。コーディングを続けてください!

以上がプロのように React コンポーネントを書く: 初心者向けのブループリントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!