国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ ウェブフロントエンド jsチュートリアル React フックを理解する: 最新の React 開(kāi)発ガイド

React フックを理解する: 最新の React 開(kāi)発ガイド

Dec 23, 2024 pm 08:13 PM

Understanding React Hooks: A Guide to Modern React Development

React のフックとは何ですか?

フック は、開(kāi)発者が機(jī)能コンポーネントから React の狀態(tài)とライフサイクル機(jī)能に「フック」できるようにする関數(shù)です。これらは React 16.8 で導(dǎo)入され、開(kāi)発者がクラス コンポーネントに変換することなく、関數(shù)コンポーネントで狀態(tài)、コンテキスト、その他の React 機(jī)能を使用できるようになりました。フックが登場(chǎng)する前は、クラス コンポーネントが React の狀態(tài)、ライフサイクル メソッド、その他の機(jī)能を処理する唯一の方法でした。

フックは、機(jī)能コンポーネントの狀態(tài)とライフサイクル ロジックを管理するための、より簡(jiǎn)潔で読みやすく、再利用可能な方法を提供します。フックを活用することで、React 開(kāi)発者は、よりシンプルでモジュール化された、テストが容易なコンポーネントを作成できます。


1.フックの主な種類

1.1. useState フック

useState フックは最も基本的なフックであり、機(jī)能コンポーネントに狀態(tài)を追加できます。現(xiàn)在の狀態(tài)値を含む配列とその値を更新する関數(shù)を返します。

例:

import React, { useState } from 'react';

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

  const increment = () => setCount(count + 1);
  const decrement = () => setCount(count - 1);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={increment}>Increment</button>
      <button onClick={decrement}>Decrement</button>
    </div>
  );
};
  • useState は、初期狀態(tài)値を引數(shù) (この場(chǎng)合は 0) として受け取り、狀態(tài)変數(shù) (count) を含む配列とそれを更新する関數(shù) (setCount) を返します。

1.2. useEffect フック

useEffect フックを使用すると、関數(shù)コンポーネントで副作用を?qū)g行できます。これらの副作用には、データのフェッチ、イベントのサブスクライブ、DOM の手動(dòng)変更などの操作が含まれる可能性があります。これは、componentDidMount、componentDidUpdate、componentWillUnmount などのクラス コンポーネントのライフサイクル メソッドを置き換えます。

例:

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

const Timer = () => {
  const [seconds, setSeconds] = useState(0);

  useEffect(() => {
    const timer = setInterval(() => {
      setSeconds((prev) => prev + 1);
    }, 1000);

    // Cleanup function to clear the interval
    return () => clearInterval(timer);
  }, []); // Empty dependency array means this effect runs once, like componentDidMount

  return <p>Timer: {seconds} seconds</p>;
};
  • useEffect はデフォルトでレンダリングのたびに実行されます。ただし、2 番目の引數(shù) (依存関係配列) を渡して、いつエフェクトを?qū)g行するかを制御できます。依存関係配列が空の場(chǎng)合、エフェクトはコンポーネントのマウント時(shí)に 1 回だけ実行されます。

1.3. useContext フック

useContext フックを使用すると、特定の Context オブジェクトのコンテキスト値にアクセスできます。これは、すべてのレベルで props を手動(dòng)で渡す必要がなく、コンポーネント ツリーを通じてデータを渡すのに役立ちます。

例:

import React, { useState } from 'react';

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

  const increment = () => setCount(count + 1);
  const decrement = () => setCount(count - 1);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={increment}>Increment</button>
      <button onClick={decrement}>Decrement</button>
    </div>
  );
};
  • useContext は、テーマ prop を手動(dòng)で渡さずに、ThemedComponent 內(nèi)の ThemeContext の値にアクセスするために使用されます。

1.4. useReducerフック

useReducer フックは、より複雑な狀態(tài)ロジックを管理する必要がある場(chǎng)合、特に次の狀態(tài)が前の狀態(tài)に依存する場(chǎng)合に useState の代替手段です。これは、Redux でのリデューサーの動(dòng)作と同様に動(dòng)作します。

例:

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

const Timer = () => {
  const [seconds, setSeconds] = useState(0);

  useEffect(() => {
    const timer = setInterval(() => {
      setSeconds((prev) => prev + 1);
    }, 1000);

    // Cleanup function to clear the interval
    return () => clearInterval(timer);
  }, []); // Empty dependency array means this effect runs once, like componentDidMount

  return <p>Timer: {seconds} seconds</p>;
};
  • useReducer は、reducer 関數(shù)と初期狀態(tài)を引數(shù)として受け取り、現(xiàn)在の狀態(tài)と、reducer にアクションを送信するためのディスパッチ関數(shù)を返します。

1.5。 useCallback フック

useCallback フックは、依存関係の 1 つが変更された場(chǎng)合にのみ変更される関數(shù)のメモ化されたバージョンを返します。これにより、特に関數(shù)を props として子コンポーネントに渡す場(chǎng)合に、関數(shù)の不必要な再作成が防止され、パフォーマンスの最適化に役立ちます。

例:

import React, { useContext } from 'react';

const ThemeContext = React.createContext('light');

const ThemedComponent = () => {
  const theme = useContext(ThemeContext);
  return <div>The current theme is {theme}</div>;
};

const App = () => {
  return (
    <ThemeContext.Provider value="dark">
      <ThemedComponent />
    </ThemeContext.Provider>
  );
};
  • useCallback は、レンダリングのたびに handleClick 関數(shù)が再作成されるのを防ぎ、特に大規(guī)模なアプリケーションでのパフォーマンスを最適化します。

1.6.メモフックを使用する

useMemo フックは useCallback に似ていますが、メモ化された関數(shù)ではなくメモ化された値を返します。必要な場(chǎng)合にのみ値を再計(jì)算することで、パフォーマンスの最適化に役立ちます。

例:

import React, { useReducer } from 'react';

// Reducer function
const counterReducer = (state, action) => {
  switch (action.type) {
    case 'increment':
      return { count: state.count + 1 };
    case 'decrement':
      return { count: state.count - 1 };
    default:
      return state;
  }
};

const Counter = () => {
  const [state, dispatch] = useReducer(counterReducer, { count: 0 });

  return (
    <div>
      <p>Count: {state.count}</p>
      <button onClick={() => dispatch({ type: 'increment' })}>Increment</button>
      <button onClick={() => dispatch({ type: 'decrement' })}>Decrement</button>
    </div>
  );
};
  • useMemo は、関連する依存関係 (この場(chǎng)合はカウント) が変更されるまで計(jì)算の結(jié)果を記憶することで、高コストの計(jì)算を回避するのに役立ちます。

2.フックの利點(diǎn)

1.よりシンプルで簡(jiǎn)潔なコード

フックを使用すると、クラスベースのコンポーネントを作成せずに機(jī)能コンポーネントで狀態(tài)やその他の機(jī)能を使用できるため、定型コードが減り、コンポーネントがより読みやすくなります。

2.再利用性の向上

フックを使用すると、コンポーネントのロジックをカスタム フックに抽出できるため、コードを複製することなく、さまざまなコンポーネント間でロジックを簡(jiǎn)単に共有できます。

3. 「これ」キーワードはもう不要

フックは機(jī)能コンポーネントで使用されるため、クラス コンポーネントでよくある混亂の原因である this キーワードについて心配する必要はありません。

4.コード構(gòu)成の改善

フックを使用すると、関連するロジックをまとめて保持できます。たとえば、副作用には useEffect を使用し、狀態(tài)の管理には useState をすべて同じコンポーネント內(nèi)で使用できるため、推論が容易になります。


3.結(jié)論

フック は、開(kāi)発者が機(jī)能コンポーネントで狀態(tài)、ライフサイクル メソッド、その他の React 機(jī)能を使用できるようにする React の強(qiáng)力な機(jī)能です。 useState、useEffect、useContext、useReducer などのフックを使用することで、React 開(kāi)発者はよりクリーンで保守性の高いモジュール化されたコードを作成できます。フックを使用すると、関數(shù)コンポーネントがより強(qiáng)力になり、クラス コンポーネントの複雑さを伴うことなく、狀態(tài)や副作用などの最新の機(jī)能を使用できるようになります。


以上がReact フックを理解する: 最新の React 開(kāi)発ガイドの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java vs. JavaScript:混亂を解消します Java vs. JavaScript:混亂を解消します Jun 20, 2025 am 12:27 AM

JavaとJavaScriptは異なるプログラミング言語(yǔ)であり、それぞれ異なるアプリケーションシナリオに適しています。 Javaは大規(guī)模なエンタープライズおよびモバイルアプリケーション開(kāi)発に使用されますが、JavaScriptは主にWebページ開(kāi)発に使用されます。

JavaScriptコメント:短い説明 JavaScriptコメント:短い説明 Jun 19, 2025 am 12:40 AM

JavaScriptcommentsEareEssentialential-formaining、およびGuidingCodeexecution.1)single-linecommentseared forquickexplanations.2)多LinecommentsexplaincomplexlogiCorprovidededocumentation.3)clarifyspartsofcode.bestpractic

JSで日付と時(shí)間を操作する方法は? JSで日付と時(shí)間を操作する方法は? Jul 01, 2025 am 01:27 AM

JavaScriptで日付と時(shí)間を処理する場(chǎng)合は、次の點(diǎn)に注意する必要があります。1。日付オブジェクトを作成するには多くの方法があります。 ISO形式の文字列を使用して、互換性を確保することをお?jiǎng)幛幛筏蓼埂?2。時(shí)間情報(bào)を取得および設(shè)定して、メソッドを設(shè)定でき、月は0から始まることに注意してください。 3.手動(dòng)でのフォーマット日付には文字列が必要であり、サードパーティライブラリも使用できます。 4.ルクソンなどのタイムゾーンをサポートするライブラリを使用することをお?jiǎng)幛幛筏蓼?。これらの重要なポイントを?xí)得すると、一般的な間違いを効果的に回避できます。

なぜの下部にタグを配置する必要があるのですか? なぜの下部にタグを配置する必要があるのですか? Jul 02, 2025 am 01:22 AM

PLACSTHETTHETTHE BOTTOMOFABLOGPOSTORWEBPAGESERVESPAGESPORCICALPURPOSESESFORSEO、userexperience、andDesign.1.IthelpswithiobyAllowingseNStoAccessKeysword-relevanttagwithtagwithtagwithtagwithemaincontent.2.iTimrovesexperiencebyepingepintepepinedeeping

JavaScript vs. Java:開(kāi)発者向けの包括的な比較 JavaScript vs. Java:開(kāi)発者向けの包括的な比較 Jun 20, 2025 am 12:21 AM

javascriptispreferredforwebdevelopment、whilejavaisbetterforlge-scalebackendsystemsandroidapps.1)javascriptexcelsininintingtivewebexperiences withitsdynAmicnature anddommanipulation.2)javaofferstruntypyping-dobject-reientedpeatures

DOMでのイベントの泡立ちとキャプチャとは何ですか? DOMでのイベントの泡立ちとキャプチャとは何ですか? Jul 02, 2025 am 01:19 AM

イベントキャプチャとバブルは、DOMのイベント伝播の2つの段階です。キャプチャは最上層からターゲット要素までであり、バブルはターゲット要素から上層までです。 1.イベントキャプチャは、AddEventListenerのUseCaptureパラメーターをTrueに設(shè)定することにより実裝されます。 2。イベントバブルはデフォルトの動(dòng)作であり、UseCaptureはfalseに設(shè)定されているか、省略されます。 3。イベントの伝播を使用して、イベントの伝播を防ぐことができます。 4.イベントバブルは、動(dòng)的なコンテンツ処理効率を改善するためにイベント委任をサポートします。 5.キャプチャを使用して、ロギングやエラー処理など、事前にイベントを傍受できます。これらの2つのフェーズを理解することは、タイミングとJavaScriptがユーザー操作にどのように反応するかを正確に制御するのに役立ちます。

JavaScript:効率的なコーディングのためのデータ型の調(diào)査 JavaScript:効率的なコーディングのためのデータ型の調(diào)査 Jun 20, 2025 am 12:46 AM

javascripthassevenfundamentaldatypes:number、string、boolean、undefined、null、object、andsymbol.1)numberseadouble-precisionformat、有用であるため、有用性の高いものであるため、but-for-loating-pointarithmetic.2)ストリングリムムット、使用率が有用であること

JavaScriptアプリケーションのペイロードサイズをどのように削減できますか? JavaScriptアプリケーションのペイロードサイズをどのように削減できますか? Jun 26, 2025 am 12:54 AM

JavaScriptアプリケーションがゆっくりとロードされ、パフォーマンスが低い場(chǎng)合、問(wèn)題はペイロードが大きすぎることです。ソリューションには、次のものが含まれます。1。コード分割(コードスプリッティング)を使用し、React.lazy()またはビルドツールを介して大きなバンドルを複數(shù)の小さなファイルに分割し、最初のダウンロードを減らすために必要に応じてロードします。 2。未使用のコード(Treeshaking)を削除し、ES6モジュールメカニズムを使用して「デッドコード」をクリアして、導(dǎo)入されたライブラリがこの機(jī)能をサポートしていることを確認(rèn)します。 3.リソースファイルを圧縮してマージし、GZIP/BrotliとTerserがJSを圧縮できるようにし、ファイルを合理的にマージし、靜的リソースを最適化します。 4.頑丈な依存関係を交換し、day.jsやフェッチなどの軽量ライブラリを選択します

See all articles