Hook
함수형 컴포넌트가 클래스형 컴포넌트의 기능을 사용할 수 있도록 해주는 기능이다.
클래스형 컴포넌트에서만 가능하던 상태관리를 함수형 컴포넌트에서도 쉽게 제어할 수 있게 한다.
use를 붙여야한다.state를 함수형 컴포넌트에서 사용하게 해주는 Hook
import React, { useState } from 'react';
function Example() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
setCount(count + 1); // 일반형 업데이트
setCount(() => { return count + 1 }); // 함수형 업데이트
side effect(화면이 랜더링된 후 비동기로 처리되어야하는 부수적인 효과)를 처리하는 Hook
import React, { useState, useEffect } from 'react';
function Example() {
const [count, setCount] = useState(0);
useEffect(() => {
document.title = `You clicked ${count} times`;
});
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
useEffect(() => {
document.title = `You clicked ${count} times`;
}, []);
useEffect(() => {
document.title = `You clicked ${count} times`;
}, [count]);
useEffect(() => {
document.title = `You clicked ${count} times`;
// clean up code
return () => {
console.log("clean up", document.title);
};
}, []);
React에서 DOM을 직접 컨트롤할 때 사용하는 Hook
function TextInputWithFocusButton() {
const inputEl = useRef(null);
const onButtonClick = () => {
inputEl.current.focus();
};
return (
<>
<input ref={inputEl} type="text" />
<button onClick={onButtonClick}>Focus the input</button>
</>
);
}
출처