React.js の純粋なコンポーネント

Patricia Arquette
リリース: 2024-10-24 03:17:30
オリジナル
983 人が閲覧しました

Pure Component in React.jsコンポーネントを純粋に保つことは、React と関数型プログラミングの基本原則です。ここでは、React コンポーネントの純度を維持するためのメリットや戦略など、コンポーネントの純度の概念をさらに詳しく説明します。


React でコンポーネントを純粋に保つ

純粋関数とは何ですか?

純粋関数は、次のような関数です。

  1. 決定的: 同じ入力が与えられると、常に同じ出力が生成されます。
  2. 副作用なし: 外部状態の変更や外部との対話 (API 呼び出しの実行、DOM の操作など) などの副作用は発生しません。

純粋なコンポーネントを使用する理由

  1. 予測可能性: 純粋なコンポーネントは一貫して動作します。その出力を信頼できるため、アプリケーションに関する推論が簡素化されます。

  2. テストが簡単: 純粋なコンポーネントは予測可能で副作用がないため、テストが簡単です。外部状態の変化を心配することなく、入力プロパティに基づいて出力を直接テストできます。

  3. パフォーマンスの最適化: 純粋なコンポーネントはレンダリングの最適化に役立ちます。 React は、プロパティの変更に基づいてコンポーネントを再レンダリングする必要があるかどうかを効率的に判断できます。

  4. 保守性: コードベースが拡大するにつれて、純粋なコンポーネントの保守がより簡単になります。隠れた依存関係を持たずに機能をカプセル化し、デバッグとリファクタリングを容易にします。

  5. 再利用: 純粋なコンポーネントは外部状態に依存しないため、再利用可能性が高くなります。さまざまなコンテキストで簡単に使用できます。

コンポーネントを純粋に保つ方法

コンポーネントを確実に純粋な状態に保つための戦略をいくつか示します:

  1. 副作用を避ける:
    • プロパティやグローバル状態を直接変更しないでください。
    • レンダリング メソッド内の非同期操作 (API 呼び出し、タイマーなど) を避けてください。
   const PureComponent = ({ count }) => {
     // Pure function: does not cause side effects
     return <div>{count}</div>;
   };
ログイン後にコピー
  1. React.memo を使用する:
    • 関数コンポーネントを React.memo でラップして、プロパティが変更されていない場合に不要な再レンダリングを防ぎます。
   const PureGreeting = React.memo(({ name }) => {
     return <h1>Hello, {name}!</h1>;
   });
ログイン後にコピー
  1. プロップの構造を解除:
    • コンポーネントのパラメータリスト内のプロップを構造化して、コンポーネントの構造をクリーンで焦点を絞った状態に保ちます。
   const PureButton = ({ label, onClick }) => {
     return <button onClick={onClick}>{label}</button>;
   };
ログイン後にコピー
  1. 状態をリフトアップ:
    • 親コンポーネントで状態を管理し、必要なデータとイベント ハンドラーを子コンポーネントに渡します。これにより、子コンポーネントは純粋に機能し続けます。
   const ParentComponent = () => {
     const [count, setCount] = useState(0);

     return <PureCounter count={count} setCount={setCount} />;
   };
ログイン後にコピー
  1. レンダリングでインライン関数を避ける:
    • 関数を render メソッド内でインラインで定義する代わりに、関数を外部で定義します。これにより、レンダリングごとに新しい関数インスタンスが作成されなくなり、不必要な再レンダリングが発生する可能性があります。
   const PureCounter = React.memo(({ count, setCount }) => {
     return <button onClick={() => setCount(count + 1)}>Increment</button>;
   });
ログイン後にコピー
  1. 状態を直接変更しないようにします:
    • 既存の状態を直接変更するのではなく、新しい状態を返すメソッドを使用します。これは不変性の原則と一致します。
   const handleAddItem = (item) => {
     setItems((prevItems) => [...prevItems, item]); // Pure approach
   };
ログイン後にコピー

純粋なコンポーネントの例

これらの原則に従った純粋な機能コンポーネントの完全な例を次に示します。

import React, { useState } from 'react';

const PureCounter = React.memo(({ count, onIncrement }) => {
  console.log('PureCounter Rendered');
  return <button onClick={onIncrement}>Count: {count}</button>;
});

const App = () => {
  const [count, setCount] = useState(0);

  const handleIncrement = () => {
    setCount((prevCount) => prevCount + 1);
  };

  return (
    <div>
      <h1>Pure Component Example</h1>
      <PureCounter count={count} onIncrement={handleIncrement} />
    </div>
  );
};

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

結論

React でコンポーネントを純粋に保つと、開発が簡素化されるだけでなく、パフォーマンスと保守性も向上します。純粋関数の原則に従うことで、予測可能で再利用可能でテストが簡単なコンポーネントを作成できます。副作用の回避、React.memo の使用、状態の適切な管理などのベスト プラクティスに従うことは、堅牢で販売可能なアプリケーションを構築するのに役立ちます。

以上がReact.js の純粋なコンポーネントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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