import React, { useState, useEffect } from "react";
import "./App.css";
function App() {
console.log("컴포넌트 리렌더링");
const [count, setCount] = useState(0);
const increment = () => {
setCount(count + 1);
};
const setSameCount = () => {
setCount(count);
};
// 컴포넌트가 처음으로 렌더링 될 때 동작
useEffect(() => {
console.log("component mount");
}, []);
// count가 변경될 때 동작
useEffect(() => {
console.log("count 변경 감지");
}, [count]);
return (
<div>
{count}
<button onClick={increment}>increment</button>
<button onClick={setSameCount}>setSameCount</button>
</div>
);
}
export default App;
increment
버튼을 이용해 count
를 계속 증가시킬 경우App
컴포넌트 리렌더링 및 count
가 참조된 useEffect
실행setSameCount
버튼을 이용해 같은 값을 업데이트 할 경우count
가 참조된 useEffect
는 count
가 변경되지 않았다고 판단하기 때문에 실행되지 않음setSameCount
버튼을 이용해 같은 값을 업데이트 할 경우 리렌더링이 1회 발생하는 이유는?If your update function returns the exact same value as the current state, the subsequent rerender will be skipped completely.