const [state, setState] = useState(initialState);
state: 기존 this.state
setState: 기존 this.setState
initialState: this.state의 default 값
Example
function Example() {
const [count, setCount] = useState(0);
const [isModalActive, setIsModalActive] = useState(false);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
<button onClick={() => setIsModalActive(!isModalActive)}>modal btn</button>
</div>
);
}
React class의 componentDidMount, componentDidUpdate, componentWillUnmount와 같은 목적으로 제공되만, 하나의 API로 통합된 것입니다.
useEffect(() => {}, []) // CDM
useEffect(() => {}, [count]) //CDU: count가 바뀔 때마다 실행
componentDidMount
componentDidMount() {
document.title = `You clicked ${this.state.count} times`;
}
useEffect(() => {
document.title = `You clicked ${count} times`;
}, []);
componentDidUpdate
componentDidUpdate(prevProps, prevState) {
if (prevState.count !== this.state.count) {
document.title = `You clicked ${this.state.count} times`;
}
}
useEffect(() => {
document.title = `You clicked ${count} times`;
}, [count]); // count가 바뀔 때만 effect를 재실행합니다.