useEffect フックの説明

Patricia Arquette
リリース: 2024-09-28 18:16:02
オリジナル
829 人が閲覧しました

useEffect Hook Explained

The useEffect hook is a fundamental part of React, allowing you to perform side effects in functional components. Here’s a detailed breakdown:

What is useEffect?

  • The useEffect hook lets you perform side effects in your components, such as data fetching, subscriptions, or manually changing the DOM.
  • It can be considered a combination of the lifecycle methods componentDidMount, componentDidUpdate, and componentWillUnmount.

Syntax

useEffect(() => {
  // Your side effect code here

  return () => {
    // Cleanup code (optional)
  };
}, [dependencies]);
ログイン後にコピー

Parameters

  1. Effect Function: The first argument is a function that contains the side effect code. This function will run after the render is committed to the screen.

  2. Cleanup Function (optional): The effect function can return a cleanup function that React will call when the component unmounts or before the effect runs again. This is useful for cleaning up subscriptions or timers.

  3. Dependencies Array: The second argument is an array of dependencies. The effect runs only when one of the dependencies changes. If you pass an empty array ([]), the effect runs only once after the initial render (like componentDidMount).

Usage Examples

  1. Basic Example: Fetching data on mount
import React, { useEffect, useState } from 'react';

const DataFetchingComponent = () => {
  const [data, setData] = useState(null);

  useEffect(() => {
    fetch('https://api.example.com/data')
      .then(response => response.json())
      .then(data => setData(data))
      .catch(error => console.error('Error fetching data:', error));
  }, []); // Runs only once after the initial render

  return <div>{data ? JSON.stringify(data) : 'Loading...'}</div>;
};
ログイン後にコピー
  1. Cleanup Example: Subscribing to an event
import React, { useEffect } from 'react';

const EventListenerComponent = () => {
  useEffect(() => {
    const handleResize = () => {
      console.log('Window resized:', window.innerWidth);
    };

    window.addEventListener('resize', handleResize);

    // Cleanup function to remove the event listener
    return () => {
      window.removeEventListener('resize', handleResize);
    };
  }, []); // Runs only once after the initial render

  return <div>Resize the window and check the console.</div>;
};
ログイン後にコピー
  1. Dependency Example: Running an effect based on a prop change
import React, { useEffect, useState } from 'react';

const TimerComponent = ({ delay }) => {
  const [count, setCount] = useState(0);

  useEffect(() => {
    const timer = setInterval(() => {
      setCount(prevCount => prevCount + 1);
    }, delay);

    // Cleanup function to clear the timer
    return () => clearInterval(timer);
  }, [delay]); // Runs every time `delay` changes

  return <div>Count: {count}</div>;
};
ログイン後にコピー

Best Practices

  • Specify Dependencies: Always include the variables that your effect depends on in the dependencies array to avoid stale closures.
  • Avoid Side Effects in Rendering: Keep side effects out of the render phase; use useEffect instead.
  • Use Cleanup Functions: If your effect creates subscriptions or timers, always return a cleanup function to avoid memory leaks.

Conclusion

The useEffect hook is a powerful tool for handling side effects in functional components, making it essential for modern React development. By understanding its syntax and best practices, you can effectively manage component behavior and side effects.

以上がuseEffect フックの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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