inflearn logo
강의

Course

Instructor

Learn React by Building It: Basics

14 Creating a state with useState

console.log(counter); 가 handleFormSubmit 함수 내부에 있을 때 동작이 잘 이해가 안됩니다.

Resolved

308

goddios

8 asked

1

안녕하세요!

Form 컴포넌트 내부를 작성해보다 실수로 아래와 같이 작성하였는데요

function handleFormSubmit(event) {

   event.preventDefault();

   console.log('submit');

   setCounter(100);

   console.log(counter);

}

이런식으로 작성을 했더니 처음 submit 시에는 console 에 1이 찍히고 그 다음에 100이 찍혔습니다. 이 동작이 잘 이해가 되지 않는데 이유를 알 수 있을까요?!

javascript react

Answer 2

2

jayjinjay

좋은 의문입니다~

이유는 리액트가 이벤트 핸들러 내에서 setState가 동기적(한 줄 코드가 끝나면 다음 줄 코드 읽기)이 아닌 비동기적(한 줄 코드가 완전히 끝나지 않더라도 다음 줄 코드 읽기)으로 작동하기 때문이에요.

그래서 setCounter(100)을 하고 바로 console.log로 counter를 찍으면 아직 100으로 바뀌지 않은 상태기 때문에 1이 찍힙니다.

브라우저 이벤트가 모두 끝나면 리액트가 state를 업데이트하고, 이렇게 하면 불필요하게 앱이 리렌더링되지 않고 한번에 최적화되어서 화면을 새로 그리게 됩니다.

 

33강에서 더 설명합니다 ㅎㅎ

 

https://ko.reactjs.org/docs/faq-state.html

이 문서 읽기도 추천드려요.

0

goddios

와! 유림 선생님 감사합니다! github 책부터 여러모로 도움 많이 받고 있습니다. 더 열심히 공부해볼게요!

API 적용 안되는 코드 수정 방법입니다.

0

71

1

고양이 이미지가 엑박이 뜨네요

0

50

1

npx 명령어 사용 불가

1

74

1

const 변수와 컴포넌트의 차이

0

88

1

강의노트

0

139

1

vite로 리액트 빌드한 후 깃허브에 배포하는 방법

0

323

1

빌드할때 dist 폴더가 만들어지는데요,

0

766

1

js파일 업로드 요청

0

135

1

변경된 api 사용시 text 안나오는 문제

0

141

1

메인글자수정...

1

267

3

디렉터리 구조 관련하여 참고할 만한 예시가 있을까요?

1

310

1

https://cataas.com/undefined 로 나오는데 왜그런건가요?

1

590

4

고양이 사진이 깨져요.ㅜㅜ

2

358

3

강의 노트 위치를 모르겠습니다

1

342

1

깃 강의노트 어디서 볼 수 있나요?

1

380

2

이해가 안되는 부분이 있어요

1

360

1

api가 안불러와지네요...

1

658

4

진유림 선생님 너무 궁금해서 질문드립니다 ㅜ

1

329

2

react에서 컴포넌트 만들 때 대문자를 쓰는 이유

2

1154

2

https://cataas.com/ 여기 도메인이 죽어서 이미지가 보이지 않습니다 ㅠ

1

328

2

index.js 내용이 바꼈네용

1

317

2

프로젝트에 사용할 상태와 로직 관리 라이브러리 훅 사용 질문입니다.

1

260

2

html 코드 오류

1

462

2

고양이 이미지 깨져요

1

337

2