머 사용자들의 인풋값을 통해 업데이트되고 어쩌구 하는 예제 코드를 공부해보자.
위와 같은 동작을 하는 예제 코드를 본격적으로 확인해보자.
중요!
분을 시간 단위로 바꾸면서 사용자가 다른 값을 입력할때마다 input value를 업데이트 해야한다.
function App()
{
const [amount, setAmount] = React.useState(0)
const onChange = (event) => {
setAmount(event.target.value)
}
const reset = () => setAmount(0)
}
return (
<div>
<h1 className="h1">Super Converter</h1>
<div>
<label htmlFor="Minutes">Minutes</label>
<input
value={amount}
id="minutes"
placehoder="Minutes"
type="nuimber"
onChange={onChange}
/>
<h4>You want to conver : {amount}</h4>
<label htmlFor="Hours">Hours</label>
<input
value={Math.round(amount / 60)}
id="hours"
placehoder="Hours"
type="number"
/>
</div>
</div>
)
const [amount, setAmount] = React.useState(0)
React.useState(0) -> default : 0
amount -> first element로 현재 값을 말한다.
setAmount -> 값을 변경해주는 함수
input value={amount}를 통해 데이터를 얻을 수 있다.
JXS는 HTML과 같은 기능을 하지만 몇 가지 지원되지 않는 기능이 있다.
예를 들어 class, for와 같은 자바스크립트에서 선점하고 있는 함수이름을 사용할 경우 에러가 난다.
따라서 JXS에서 사용할 수 있는 태그로 대체하여 사용해야한다.
HTML class -> JXS className
HTML label for -> JXS htmlFor
const onChange = (event) => {console.log(event)}
위의 코드에서처럼 event를 출력하면 리액트에서는 가짜 event를 발생시킨다.
따라서 value를 얻기위해선 원래의 event(native event)에서 찾아야한다.
-> console.log(event.target.value)
이런 방식을 사용하면 document.get어쩌구를 해줄 필요가 없어 좋다.
분 <-> 시간 단위로 변경시에 invert버튼을 통해 스위칭되고 input이 활성화/비활성화되는 기능도 함께 추가하였다.
function App() {
const [amount, setAmount] = React.useState(0)
const [inverted, setInverted] = React.useState(false)
const onChange = (event) => {
setAmount(event.target.value)
}
const reset = () => setAmount(0)
const onInvert = () => {
reset()
setInverted((current) => !current)
}
return (
<div>
<h1 className="h1">Super Converter</h1>
<div>
<label html For="Minutes">Minutes</label>
<input
value={inverted ? amount * 60 : amount}
id="minutes"
placehoder="Minutes"
type="number"
onChange={onChange}
disabled={inverted}
/>
</div>
<div>
<label htmlFor="Hours">Hours</label>
<input
value={inverted ? amount : Math.round(amount / 60)}
id="hours"
placehoder="Hours"
type="number"
disabled={!inverted}
onChange={onChange}
/>
</div>
<button onClick={reset}>Reset</button>
<button onClick={onInvert}>{inverted ? "Turn back" : "Invert"}</button>
</div>
)
}
const onInvert = () => {
setInverted((current) => !current)
}
Invert 상태를 확인하여 true -> false, false -> true로 반환하는 함수
현재 값을 받아서 그 반대의 값을 내놓는다.
하지만 머릿속에는 오래 남는편인듯... 부지런히 열심히 하자자자잣