less than 1 minute read

참고:

 

문제 상황: 웹을 사용하는 날짜를 자동으로 App.js의 state 중 day 값으로 넣고 싶다. 그리고 나는 할 줄 모른다.

날짜를 불러오기 위해 cmd로 moment를 설치한다.1218-1

 

1218-2

위 변수를 console.log하면 20211218의 형태로 날짜가 찍힌다. 좀 더 정확하게 기록되도록 초까지 찍어놓자.

1218-0

1218-A

1218-B

DaySelect 컴포넌트의 today 값이 App 컴포넌트의 day 값에 저장되도록 로직을 완성했다.

 

1218-C

오류 없이 잘 작동한다. 그런데 버튼을 두 번 눌러야 state에 저장된다. 이유를 알아보니 이랬다.

 

20211218-A

render()를 실행하는 과정에서 props나 state 상태가 바뀌면 render()를 다시 수행하는데,

상태가 바뀌는 즉시 수행하는 것이 아니라 수행중인 render()내의 작업은 모두 마친 후에 다시 render()작업을 수행하기 때문이라고 결론 지었다.

1218-D

그 근거로,

console.log에는 적용되지 않고 나오지만 크롬 개발자 모드에서 버튼을 누르고 지켜보면 한 번만 눌러도 App.js의 day값이 적용이 된 걸 확인했기 때문이다!