당근먹는하니
귀엽고 행복해
당근먹는하니
전체 방문자
오늘
어제
  • 분류 전체보기 (274)
    • 다람쥐🐿 (26)
    • C++ 공부빵야 (7)
    • 공부👻 (5)
    • 프론트엔드✏️ (228)
      • 코드캠프 (120)
      • 팀 프로젝트✨ (31)
      • 개인공부 (67)
    • 프론트엔드 - 바닐라js (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • CSS
  • javascrpit
  • 자바스크립트
  • 프론트엔드
  • 프로그래머스
  • 코딩
  • JS
  • 리액트
  • HTML
  • react
  • emotion
  • 팀프로젝트
  • 코드캠프
  • 알고리즘
  • 공통 컴포넌트
  • 부트캠프
  • 팀 프로젝트
  • 배열
  • refreshtoken
  • graphql
  • algorithm
  • React-hook-form
  • 코딩 부트캠프
  • 팀플
  • next.js
  • ssg
  • typescript
  • 배포
  • 회고
  • javascript

최근 댓글

최근 글

티스토리

250x250
반응형
hELLO · Designed By 정상우.
당근먹는하니

귀엽고 행복해

프론트엔드✏️/코드캠프

React - Hooks : prev state

2022. 5. 30. 01:49
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
    '프론트엔드✏️/코드캠프' 카테고리의 다른 글
    • 220530 프론트엔드 부트캠프 20일차 : 클래스 컴포넌트, 생명주기(Lifecycle)
    • 알고리즘
    • React - event
    • CSS 이름 짓는 규칙
    당근먹는하니
    당근먹는하니

    티스토리툴바