Reactでカスタムフックを作成する方法を教えます

Reactでカスタムフックを作成する方法を教えます

1. カスタムフックとは何か

ロジックの再利用

簡単に言えば、カスタム フックを使用すると、特定のコンポーネント ロジックを再利用可能な関数に抽出できます。 カスタム フックは、 useから始まる他のフックを呼び出す JavaScript 関数です。

2. カスタムフックを使用しない場合

例1:ページ全体でユーザーのマウス移動の座標を取得する必要がある場合、フックコードを使用せずに次のように記述できます。

  const [位置、setPosition] = useState({
    x: 0,
    年: 0
  })
  使用効果(() => {
    定数移動 = (e) => {
      setPosition({ x: ex, y: ey })
    }
    document.addEventListener('mousemove', 移動)
    戻り値 () => {
      document.removeEventListener('mousemove', 移動)
    }
  }, [])
  戻る (
    <div>
      x:{位置.x}
      y:{位置.y}
    </div>
  )

例 2: ページにマウスを追従する画像がある場合、フック コードを使用せずに次のように記述することもできます。

const [位置、setPosition] = useState({
    x: 0,
    年: 0
  })
  使用効果(() => {
    定数移動 = (e) => {
      setPosition({ x: ex, y: ey })
    }
    document.addEventListener('mousemove', 移動)
    戻り値 () => {
      document.removeEventListener('mousemove', 移動)
    }
  }, [])
  戻る (
    <div>
      <画像
        画像
        スタイル={{
          位置: '絶対'、
          上: position.y,
          左: position.x、
        }}
        代替案=""
      />
    </div>
  )

明らかに、上記の 2 つの例ではプレゼンテーション効果が異なりますが、使用されるロジック コードはほぼ同じです。フックを使用してロジック コードを再利用できます。

3. カスタムフックを使用する

上記の2つの例から再利用可能なロジックコードを抽出し、useMousePositionという新しいファイルを作成します。

'react' から { useState, useEffect } をインポートします。
デフォルト関数 useMousePosition() をエクスポートします。
  const [位置、setPosition] = useState({
    x: 0,
    年: 0
  })
  使用効果(() => {
    定数移動 = (e) => {
      setPosition({ x: ex, y: ey })
    }
    document.addEventListener('mousemove', 移動)
    戻り値 () => {
      document.removeEventListener('mousemove', 移動)
    }
  }, [])
  戻る位置
}

この機能は useMousePosition 関数で抽出しました。これで、使いたい場所にインポートできるようになりました。

最後に、通常の関数のように使用します

  定数位置 = useMousePosition()
  戻る (
    <div>
      x:{位置.x}
      y:{位置.y}
    </div>
  )

明らかにコード量は減っている

これで、React でカスタム フックを作成する方法に関するこの記事は終了です。React カスタム フックに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • ReactHooks バッチ更新状態とルートパラメータの取得例の分析
  • React Hook: Effect Hookの使い方
  • 3分でReact-hooksとサンプルコードを理解する
  • React の 10 個のフックの紹介
  • React Hooksの詳細な説明
  • React Hook: ステートフックの使い方

<<:  docker compose を使用して consul クラスタ環境を構築する例

>>:  HTML でのテキストエリアの使用と一般的な問題およびケース分析

推薦する

この記事は、Dockerにおけるcgroupの具体的な使用法を徹底的に理解するのに役立ちます。

目次cgroupとはcgroupの構成cgroupが提供する機能cgroup 内の CPU を制限す...

MySQL 5.7.17 インストール グラフィック チュートリアル (Windows)

最近データベースを学び始めたのですが、とても興味深いコースだと感じていますが、含まれる内容の多くは私...

同じ日の最初の3つのデータを取得するためのMySQLタイムラインデータ

テーブルデータを作成する テーブル `praise_info` を作成します ( `id` bigi...

Ubuntu 18.04にmysql5.7をインストールする

Ubuntu 18.04では参考までにmysql 5.7をインストールします。具体的な内容は以下のと...

Linux で PHP curl 拡張機能をインストールする方法の詳細な説明

この記事では、Linux で PHP curl 拡張機能をインストールする方法について説明します。ご...

Tomcat のパフォーマンス最適化方法の簡単な概要

Tomcat自体の最適化Tomcat メモリ最適化起動時に大きなメモリ ブロックが必要であることを ...

LAMP ソースコードを使用したエンタープライズレベルのインストールチュートリアル

目次LAMPアーキテクチャ1.ランプの紹介2. WebサービスワークフローWebサーバーのリソースは...

Tomcatの自動シャットダウンに関するバグ修正

序文最近、4 年間実行されている Java EE Web プロジェクトでは、システムが開けないという...

jsはショッピングカートの加算と減算、価格計算を実装します

この記事の例では、ショッピングカートの加算と減算、価格計算を実装するためのjsの具体的なコードを共有...

MySQL ロック(テーブルロック、行ロック、共有ロック、排他ロック、ギャップロック)の詳細な説明

現実世界では、鍵は外の世界から身を隠したいときに使用するツールです。コンピュータでは、複数のプロセス...

Nginx は rtmp ライブ サーバーの実装コードを構築します

1. nginxソースディレクトリに新しいrtmpディレクトリを作成し、git clone http...

crontab スケジュールされたタスクが実行されない理由の分析と解決

序文Linux のスケジュールされたタスクを実装する方法としては、cron、anacron、at な...

MySQL msiバージョンのダウンロードとインストールの初心者向けの詳細なグラフィックチュートリアル

目次1. MySQL msiバージョンをダウンロードする2. インストール3. 環境変数を設定する1...

強くお勧めします! Vue 3.2 でシンタックスシュガーを設定する

目次前の1. セットアップ構文シュガーとは何か2. セットアップコンポーネントを使用して自動的に登録...

Linux inotifyリアルタイムバックアップの実装方法の詳細説明

リアルタイム レプリケーションは、企業データをバックアップする最も重要な方法です。主に、ユーザーが送...