(실습) 섭씨온도와 화씨온도 표시하기 관련
왜 화씨, 섭씨가 바뀌면 서로 서로 영향을 주면서 같이 바뀌는지 그 흐름이 정확히 이해가 안되네요.. console.log로 도배해서 파악한 바로는 아래와 같습니다.
[섭씨를 바꾼다는 가정]
TemperatureInput 컴포넌트의 value가 바뀜
TemperatureInput 컴포넌트의 props.onTemperatureChange(event.target.value); 호출
Calculator 컴포넌트의 handleCelsiusChange 호출
setTemperature(temprature)와 setScale('c') 호출하여 temprature, scale의 state가 바뀜
state가 바뀌었으니 Calculator 컴포넌트가 재생성(?)
Calculator 컴포넌트의 return에 TemperatureInput temperature props에 celsius, fahrenheit가 업데이트 된채로 TemperatureInput 컴포넌트 재생성(?)
TemperatureInput 컴포넌트의 input은 props.temperature를 value로 보여주고 있으니 각각 바뀜
위 가정의 흐름이 대충 맞는건지 궁금합니다! 뭔가 어거지로 끼워맞춘건지 제대로 파악하고 있는지 애매하네요...
답변 1
1
안녕하세요, 소플입니다.
쉽게 말하면, TemperatureInput 컴포넌트는 단순히 props로 받은 온도 값을 보여주고,
온도 값이 변경되었을 경우 props를 통해 받은 onTemperatureChange() 함수를 호출하는 역할만 합니다.
컴포넌트 자신이 직접 state를 들고 있는 것이 아닌 것이죠.
그리고 실제 온도 값과 단위는 상위 컴포넌트인 Calculator 컴포넌트가 useState() 훅을 사용하여 관리하고 있습니다.
이 값을 각각 섭씨, 화씨로 바꿔서 2개의 TemperatureInput 컴포넌트로 내려주는 것입니다.
리액트 컴포넌트는 state가 변경되면 질문에서 재생성이라고 표현하신 것처럼 재렌더링이 됩니다.
그래서 2개의 TemperatureInput 컴포넌트 중 어느 한 쪽에서 온도 값을 변경하게 되면,
상위 컴포넌트인 Calculator 컴포넌트가 들고있는 state가 변경되고,
그 결과로 2개의 TemperatureInput 컴포넌트가 모두 재렌더링 되어 화면에 새로운 값이 나타나게 되는 것입니다.
감사합니다.
강의가 삭제되었다고 합니다
0
106
1
이거 왜 존재하지 않는다고 뜨는건가요
0
133
1
존재하지 않는 수업이라고 떠요
0
183
1
안드로이드 에뮬레이터 오류
0
100
1
교재 구입해서 강의 들으려고 하는데 커리큘럼이 없어졌어요.
0
125
1
prevIsConfiromed 질문
1
141
2
chapter14 잘이해가 되지않습니다..
1
135
2
2025년 3월 리액트버전
1
202
2
npm 설치 오류
1
175
1
chapter_07 콘솔로그 질문드려요~!
1
128
2
안녕하세요 미니블로그 실습 질문드립니다.
1
178
3
에러가 떠요
1
218
3
Chapter6 질문 드립니다
1
209
2
실습 코드 있을까요?
1
206
2
상태가 업데이트될때 컴포넌트 최상단의 console.log 코드가 두번 실행되는 이유가 궁금합니다.
1
233
2
npx create-react-app my-app 명령어 입력이 잘못된 것 같습니다
0
308
3
이름과 코멘트 줄바꿈이 안 됩니다.
0
140
1
버튼이 안 뜹니다
0
303
2
npx create-react-app my-app
1
470
2
jsx 코드 작성해보기에서 index.js 수정 후 에러 뜹니다.
1
376
3
Chapter_05 터미널, 리액트 에러
0
193
2
npx create-react-app my-app 명령어 반응없음
1
432
3
import 코드 에러
1
214
1
백틱
1
121
1





