
1. React 컴포넌트 생성
- amount : 입력된 거리 값
- flipped : 킬로미터와 마일 간 전환 여부
function App() {
const [amount, setAmount] = React.useState(0);
const [flipped, setFlipped] = React.useState(false);
2. 이벤트 핸들러 작성
- onChange : 입력값이 변경될 때 호출되어 값을 업데이트함
const onChange = (event) => {
setAmount(event.target.value);
};
const reset = () => setAmount(0);
const onFlip = () => {
reset();
setFlipped((current) => !current);
};
3. JSX를 사용하여 UI 구성
return (
<div>
<h1>거리 계산기</h1>
<label htmlFor="kilometers">Kilometers</label>
<input
value={flipped ? (amount / 0.621371) : amount}
id="kilometers"
placeholder="Kilometers"
type="number"
onChange={onChange}
disabled={flipped}
/>
<label htmlFor="miles">Miles</label>
<input
value={flipped ? amount : (amount * 0.621371)}
id="miles"
placeholder="Miles"
type="number"
disabled={!flipped}
onChange={onChange}
/>
<button onClick={reset}>초기화</button>
<button onClick={onFlip}>전환</button>
</div>
);
4. ReactDOM을 사용하여 컴포넌트 렌더링
const root = document.getElementById("root");
ReactDOM.render(<App />, root);
<!DOCTYPE html>
<html lang="en">
<body>
<div id="root"></div>
</body>
<script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/babel-standalone@6.26.0/babel.min.js"></script>
<script type="text/babel">
function App() {
const [amount, setAmount] = React.useState(0);
const [flipped, setFlipped] = React.useState(false);
const onChange = (event) => {
setAmount(event.target.value);
};
const reset = () => setAmount(0);
const onFlip = () => {
reset();
setFlipped((current) => !current);
};
return (
<div>
<h1>거리 계산기</h1>
<label htmlFor="kilometers">Kilometers</label>
<input
value={flipped ? (amount / 0.621371) : amount}
id="kilometers"
placeholder="Kilometers"
type="number"
onChange={onChange}
disabled={flipped}
/>
<label htmlFor="miles">Miles</label>
<input
value={flipped ? amount : (amount * 0.621371)}
id="miles"
placeholder="Miles"
type="number"
disabled={!flipped}
onChange={onChange}
/>
<button onClick={reset}>초기화</button>
<button onClick={onFlip}>전환</button>
</div>
);
}
const root = document.getElementById("root");
ReactDOM.render(<App />, root);
</script>
</html>



Share article