ホームページ > ウェブフロントエンド > jsチュートリアル > 中レベル: React でのイベントの処理

中レベル: React でのイベントの処理

PHPz
リリース: 2024-07-18 09:58:28
オリジナル
1071 人が閲覧しました

Mid level: Handling Events in React

中級レベルの開発者は、React でのイベントの処理についてしっかりと理解している必要があります。これは、インタラクティブで動的なアプリケーションを作成するために不可欠です。このガイドでは、イベント ハンドラーの追加、合成イベントの理解、イベント ハンドラーへの引数の受け渡し、カスタム イベントの作成、イベント委任の活用など、高度な概念とベスト プラクティスについて説明します。

イベント処理

JSX でのイベント ハンドラーの追加

React では、イベント ハンドラーを JSX に直接追加できます。イベント ハンドラーは、ボタンのクリックやフォームの送信など、特定のイベントが発生したときに呼び出される関数です。 JSX でのイベント ハンドラーの追加は、通常の HTML で行う方法と似ていますが、React の JSX 構文を使用します。

イベントハンドラーの追加例:

import React from 'react';

const handleClick = () => {
  alert('Button clicked!');
};

const App = () => {
  return (
    <div>
      <button onClick={handleClick}>Click Me</button>
    </div>
  );
};

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

この例では、ボタンがクリックされるたびに handleClick 関数が呼び出されます。 JSX の onClick 属性は、イベント ハンドラーを指定するために使用されます。

合成イベント

React は合成イベントと呼ばれるシステムを使用してイベントを処理します。合成イベントは、ブラウザーのネイティブ イベント システムのクロスブラウザー ラッパーです。これにより、さまざまなブラウザ間でイベントが一貫して動作することが保証されます。

合成イベントの例:

import React from 'react';

const handleInputChange = (event) => {
  console.log('Input value:', event.target.value);
};

const App = () => {
  return (
    <div>
      <input type="text" onChange={handleInputChange} />
    </div>
  );
};

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

この例では、handleInputChange 関数は、入力フィールドの値が変更されるたびにその値を記録します。イベント パラメーターは、すべてのブラウザーにわたって一貫したイベント プロパティを提供する合成イベントです。

イベントハンドラーに引数を渡す

場合によっては、追加の引数をイベント ハンドラーに渡す必要があります。これは、アロー関数またはバインド メソッドを使用して実行できます。

アロー関数を使用した例:

import React from 'react';

const handleClick = (message) => {
  alert(message);
};

const App = () => {
  return (
    <div>
      <button onClick={() => handleClick('Button clicked!')}>Click Me</button>
    </div>
  );
};

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

bind メソッドを使用した例:

import React from 'react';

const handleClick = (message) => {
  alert(message);
};

const App = () => {
  return (
    <div>
      <button onClick={handleClick.bind(null, 'Button clicked!')}>Click Me</button>
    </div>
  );
};

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

どちらのメソッドでも、追加の引数を handleClick 関数に渡すことができます。

カスタムイベント処理

カスタムイベントの作成

React の合成イベントは一般的なユースケースのほとんどをカバーしていますが、より複雑なインタラクションにはカスタム イベントの作成が必要になる場合があります。カスタム イベントは、CustomEvent コンストラクターとdispatchEvent メソッドを使用して作成およびディスパッチできます。

カスタム イベントの作成とディスパッチの例:

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

const CustomEventComponent = () => {
  const buttonRef = useRef(null);

  useEffect(() => {
    const handleCustomEvent = (event) => {
      alert(event.detail.message);
    };

    const button = buttonRef.current;
    button.addEventListener('customEvent', handleCustomEvent);

    return () => {
      button.removeEventListener('customEvent', handleCustomEvent);
    };
  }, []);

  const handleClick = () => {
    const customEvent = new CustomEvent('customEvent', {
      detail: { message: 'Custom event triggered!' },
    });
    buttonRef.current.dispatchEvent(customEvent);
  };

  return (
    <button ref={buttonRef} onClick={handleClick}>
      Trigger Custom Event
    </button>
  );
};

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

この例では、customEvent という名前のカスタム イベントが作成され、ボタンがクリックされたときに送出されます。イベント ハンドラーはカスタム イベントをリッスンし、イベントの詳細メッセージを含むアラートを表示します。

React でのイベント委任

イベント委任は、単一のイベント リスナーを使用して複数の要素のイベントを管理する手法です。これは、特にリストやテーブルでイベントを効率的に管理するのに役立ちます。

イベント委任の例:

import React from 'react';

const handleClick = (event) => {
  if (event.target.tagName === 'BUTTON') {
    alert(`Button ${event.target.textContent} clicked!`);
  }
};

const App = () => {
  return (
    <div onClick={handleClick}>
      <button>1</button>
      <button>2</button>
      <button>3</button>
    </div>
  );
};

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

この例では、div 要素の単一のイベント ハンドラーがすべてのボタンのクリック イベントを管理します。イベント ハンドラーは、event.target をチェックしてどのボタンがクリックされたかを判断し、それに応じてアラートを表示します。

React でのイベント処理のベスト プラクティス

  1. イベント ハンドラーを賢く使用する: パフォーマンスの問題が発生する可能性があるため、レンダリング メソッド内に新しいイベント ハンドラー関数を作成しないでください。代わりに、render メソッドの外側でイベント ハンドラーを定義します。

  2. デフォルト動作の防止: 必要に応じて、event.preventDefault() を使用して、フォーム送信やアンカー タグのクリックなどのイベントのデフォルト動作を防止します。

   const handleSubmit = (event) => {
     event.preventDefault();
     // Handle form submission
   };

   return <form onSubmit={handleSubmit}>...</form>;
ログイン後にコピー
  1. 伝播の停止: 必要に応じて、event.stopPropagation() を使用して、親要素へのイベントの伝播を停止します。
   const handleButtonClick = (event) => {
     event.stopPropagation();
     // Handle button click
   };

   return <button onClick={handleButtonClick}>Click Me</button>;
ログイン後にコピー
  1. デバウンスとスロットリング: デバウンスまたはスロットルの手法を使用して、スクロールやサイズ変更などの高頻度イベントに対してイベント ハンドラーが呼び出される回数を制限します。

  2. イベント リスナーのクリーンアップ: イベント リスナーを DOM 要素 (特にクラス コンポーネントまたはフック) に直接追加する場合は、メモリ リークを避けるために必ずクリーンアップしてください。

   useEffect(() => {
     const handleResize = () => {
       // Handle resize
     };

     window.addEventListener('resize', handleResize);

     return () => {
       window.removeEventListener('resize', handleResize);
     };
   }, []);
ログイン後にコピー

結論

React でのイベントの処理は、インタラクティブなアプリケーションを作成するために不可欠です。イベント ハンドラーの追加、合成イベントの使用、イベント ハンドラーへの引数の受け渡し、カスタム イベントの作成、イベント委任の活用方法を理解することで、より動的で効率的な React アプリケーションを構築できます。ベスト プラクティスを実装すると、アプリケーションが複雑になってもパフォーマンスと保守性が維持されます。中級レベルの開発者として、これらのテクニックを習得すると、複雑なインタラクションを処理する能力が向上し、プロジェクトの成功に貢献します。

以上が中レベル: React でのイベントの処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート