useEffect 후크는 React의 기본 부분으로, 기능적 구성 요소에서 부작용을 수행할 수 있도록 해줍니다. 자세한 내용은 다음과 같습니다.
useEffect(() => { // Your side effect code here return () => { // Cleanup code (optional) }; }, [dependencies]);
효과 함수: 첫 번째 인수는 부작용 코드를 포함하는 함수입니다. 이 함수는 렌더링이 화면에 커밋된 후에 실행됩니다.
정리 함수(선택 사항): 효과 함수는 구성 요소가 마운트 해제되거나 효과가 다시 실행되기 전에 React가 호출할 정리 함수를 반환할 수 있습니다. 이는 구독이나 타이머를 정리하는 데 유용합니다.
종속성 배열: 두 번째 인수는 종속성 배열입니다. 종속성 중 하나가 변경되는 경우에만 효과가 실행됩니다. 빈 배열([])을 전달하면 효과는 초기 렌더링 후에 한 번만 실행됩니다(예: componentDidMount).
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{data ? JSON.stringify(data) : 'Loading...'}; };
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 returnResize the window and check the console.; };
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 returnCount: {count}; };
useEffect 후크는 기능적 구성 요소의 부작용을 처리하기 위한 강력한 도구로, 현대 React 개발에 필수적입니다. 구문과 모범 사례를 이해하면 구성 요소 동작과 부작용을 효과적으로 관리할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3