import React, { useState } from 'react';
function Example() {
// "count"라는 새 상태 변수를 선언합니다
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
function ExampleWithManyStates() {
// 상태 변수를 여러 개 선언했습니다!
const [age, setAge] = useState(42);
const [fruit, setFruit] = useState('banana');
const [todos, setTodos] = useState([{ text: 'Learn Hooks' }]);
// ...
}
import React, { useState } from 'react';
function Example() {
// 새로운 state 변수를 선언하고, 이것을 count라 부르겠습니다.
const [count, setCount] = useState(0);
useState를 호출하는 것은 무얼을 하는 걸까?
useState의 인자로 무엇을 넘겨주어야 할까?
useState는 무엇을 반환할까?
useEffect(function);
useEffect(() => {}, [count]) // 의존성 배열 (배열 안에 담긴 값들을 추적, 그때 마다 업데이트)
componentDidMount (의존성 배열 : [])
shouldComponentUpdate (의존성 배열 내에 해당 사항 없을 경우)
componentDidUpdate (의존성 배열 자체가 없거나, 해당 사항이 있을 경우)
componentWillUnmount
const Foo = () => {
const [state, setState] = useState(0);
console.log("render", state);
useEffect(() => {
console.log("useEffect Callback", state);
return () => console.log("cleanUp", state);
}, [state]);
return <button onClick={() => setState(state + 1)}>하잉</button>;
};
export default Foo;
기대한 동작 !
render, 0
useEffect Callback, 0
cleanUp, 0
// 클릭
render, 1
useEffect Callback, 1
cleanUp, 1
실제 동작 !
render, 0
useEffect Callback, 0
// 클릭
render, 1
cleanUp, 0
useEffect Callback, 1
✅ 왜 다음 번 render보다 클린업 함수가 먼저 실행되나?
✅ 왜 클린업 함수의 값은 예전 사이클의 값을 가져오는지?