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 でのテキストエリアの使用と一般的な問題およびケース分析

推薦する

MySQL を暗号化および復号化するいくつかの方法 (要約)

目次前面に書かれた双方向暗号化エンコード/デコードAES_ENCRYPT/AES_DECRYPT D...

MySQL における単一テーブルと複数テーブル、およびビューと一時テーブルに対する Update と Select の違い

1. テーブルAのデータを使用してMySQLのテーブルBの内容を更新するたとえば、データ テーブル内...

WeChatミニプログラムが星評価を実装

この記事では、WeChatアプレットで星評価を実装するための具体的なコードを参考までに紹介します。具...

Vue3 での provide と injection の使用

1. provideとinjectの説明Provide と Inject により、ネストされたコンポ...

Vue スクロールダウンしてさらにデータを読み込む スクロールケースの詳細な説明

vue-無限スクロールインストール npm インストール vue-infinite-scroll -...

MySQL 演算子の具体的な使用法 (and、or、in、not)

目次1. はじめに2. 本文2.1 および演算子2.2 または演算子2.3 オペレーター2.4 no...

Vue は better-scroll を使用して水平スクロール方法の例を実現します

1. スクロールの実装原理better-scroll のスクロール原理は、ブラウザのネイティブスクロ...

MySQL 8.0.22 のインストールと設定方法のグラフィックチュートリアル

この記事ではMySQL 8.0.22のインストールと設定について記録します。具体的な内容は以下のとお...

CSS3で跳ねるボールのアニメーションを実現

私は通常、大手ウェブサイトの特別ページや製品リリースページを訪問するのが好きです。なぜなら、たくさん...

Reactのdiffアルゴリズムの詳細な分析

Reactのdiffアルゴリズムの理解diffアルゴリズムは、 Virtual DOMの変更された部...

vagrant+virtualBoxで仮想マシンを構築する方法

1. はじめにVagrant は、仮想マシン (VirtualBox) を構築および管理するためのツ...

Vue の基本入門: Vuex のインストールと使用

目次1. vuexとは何か2. インストールと導入3. vuexの使用4. プロセスの紹介5. 突然...

MySQL データベースの 1045 エラーの解決方法

ローカル データベースがサーバー データベースに接続されているときに発生する 1045 の問題を解決...

中国のウェブサイトユーザーエクスペリエンスランキング

<br />ユーザーエクスペリエンスは中国のウェブサイトでますます重視されており、ユーザ...

複数のパッケージソースから同時にパッケージをロードするようにnpmを設定する方法

目次1. ローカルストレージを構築する2. npmパッケージを作成し、プライベートリポジトリにアップ...