const celsius = scale === "f" ? tryConvert(temperature, toCelsius) : temperature;
const fahrenheit = scale === "c" ? tryConvert(temperature, toFahrenheit) : temperature;

만약 현재 scale(온도의 단위)이 "f"(화씨)라면, temperature를 섭씨로 변환해야 합니다.
tryConvert(temperature, toCelsius)는 현재 temperature를 섭씨(Celsius)로 변환하는 함수라고 가정할 수 있습니다.
그렇지 않다면(이미 "c"인 경우) temperature를 그대로 celsius에 할당합니다.
scale === "c"일 때 fahrenheit 계산
만약 현재 scale이 "c"(섭씨)라면, temperature를 화씨(Fahrenheit)로 변환해야 합니다.
tryConvert(temperature, toFahrenheit)는 현재 temperature를 화씨로 변환하는 함수입니다.
그렇지 않다면(이미 "f"인 경우) temperature를 그대로 fahrenheit에 할당합니다.
즉, 이 코드는 두 가지 변환 로직을 짧은 삼항 연산자(ternary operator) 형태로 표현한 것입니다:
화씨 입력이면 → 섭씨 쪽은 변환해주고, 화씨 쪽은 그대로 둔다.
섭씨 입력이면 → 화씨 쪽은 변환해주고, 섭씨 쪽은 그대로 둔다.
이 로직을 통해 서로 다른 단위의 온도를 동시에 계산/표시할 수 있게 됩니다.
Fragment(<> </>)
<>...</>는 React의 Fragment 문법으로, 의미 없는 최상위 태그 대신 여러 컴포넌트를 감싸기 위한 용도로 사용합니다.
DOM 상에 별도의 노드가 생성되지 않고, 내부 컴포넌트만 그룹화합니다.
Temperature 컴포넌트 (Celsius)
jsx
코드 복사
scale="c": 온도 단위를 "c(섭씨)"로 명시
changeTemperature={changeCelsius}: 섭씨 온도가 변경될 때 실행될 콜백 함수를 props로 전달
temperature={celsius}: 현재 섭씨 온도 값을 props로 전달
Temperature 컴포넌트 (Fahrenheit)
jsx
코드 복사
scale="f": 온도 단위를 "f(화씨)"로 명시
changeTemperature={changeFahrenheit}: 화씨 온도가 변경될 때 실행될 콜백 함수를 props로 전달
temperature={fahrenheit}: 현재 화씨 온도 값을 props로 전달
BoillingVerdict 컴포넌트
jsx
코드 복사
섭씨 값(celsius)을 넘겨주어, 물이 끓는지 여부(일반적으로 100℃ 이상)를 표시하는 로직을 처리하는 컴포넌트로 추정됩니다.
즉,
섭씨 입력/출력
화씨 입력/출력
섭씨 온도에 따라 물이 끓는지 검사
이 세 가지를 한 곳에서 함께 보여주도록 구성한 코드입니다. React에서 “온도 계산기” 예제로 자주 사용되는 “Lifting State Up(상태 끌어올리기)” 패턴의 대표적인 예시입니다.