728x90
반응형
prev state
setState()와 prevState()는 리액트에서 컴포넌트의 상태를 변경하는데 사용되는 Hooks다.
setState는 이벤트나 서버 응답에 대하여 UI를 다시 업데이트 하기 위해서 사용되곤 한다.
prevState는 컴포넌트의 이전 상태를 기반으로 한다.
// Next.js는 react import를 생략한다.
export default function CounterPage() {
const [count, setCount] = useState(0);
const onClickButton = () => {
setCount(count + 1);
};
return (
<div>
<button onClick={onClickButton}>{count}</button>
</div>
)
}
count라는 state를 만들고 카운터를 올릴 수 있는 함수를 만든다.
버튼을 누르면 화면의 {count}는 1씩 증가한다.
const onClickButton = () => {
setCount(count + 1);
setCount(count + 1);
};
여기서 onClickButton 의 setCount(count + 1); 을 한 번 더 쓰면
예상되는 결과는 count가 2 오르는 것이다. 그러나 화면의 count는 1만 증가한다.
이는 state의 원리와 관련있는데, state가 바뀌면 state를 사용하는 컴포넌트가 다시 만들어지고, 이를 리렌더링이라고 한다. state가 event나 다른 것에 의해 변경될 때 마다 리렌더링을 하면 처리해야하는 정보량이 너무 많아지기 때문에 react에선 그 정보를 임시메모리에 담아놨다가 함수가 끝나면 한 번에 처리 후 렌더링한다.
그래서 이전 상태의 값에 접근할 수 있는 방법을 쓴다.
const onClickButton = () => {
setCount((prev)=> prev + 1);
setCount((prev)=> prev + 1);
};
이렇게 prev를 쓰면 그 이전의 값에 1을 더하는 것으로 처리, count가 2씩 오르게 된다.
728x90
반응형
'프론트엔드✏️ > 코드캠프' 카테고리의 다른 글
220530 프론트엔드 부트캠프 20일차 : 클래스 컴포넌트, 생명주기(Lifecycle) (0) | 2022.05.31 |
---|---|
알고리즘 (0) | 2022.05.30 |
React - event (0) | 2022.05.28 |
CSS 이름 짓는 규칙 (0) | 2022.05.28 |
220527 프론트엔드 부트캠프 19일차 : 깊은 복사, 얕은 복사, Infinite-scroll (0) | 2022.05.28 |