memo) React - state

땅니·2023년 4월 8일
<!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/babel.min.js"></script>
    <script type="text/babel">
        function MinutesToHours() {
            const [amount, setAmount] = React.useState(0); // default 값: 0 
            const [inverted, setInverted] = React.useState(false);
            const onChange = (event) => {
                setAmount(event.target.value);
            };
            const reset = () => setAmount(0);
            const onFlip = () => {
                reset();
                setInverted((current) => !current); 
            };
            return (
                <div>
                        <div>
                            <label htmlFor="minutes">Minutes</label>
                            <input 
                                value={inverted ? amount * 60 : amount} 
                                id="minutes" 
                                placeholder="Minutes" 
                                type="number" 
                                onChange = {onChange}
                                disabled={inverted}
                            />
                        </div>
                        <div>
                            <label htmlFor="hours">Hours</label>
                            <input 
                                value={inverted ? amount : Math.round(amount / 60)} 
                                id="hours" 
                                placeholder="Hours" 
                                type="number"
                                disabled={!inverted}
                                onChange={onChange}
                            />
                        </div>
                        <button onClick={reset}>Reset</button>
                        <button onClick={onFlip}>{inverted ? "Turn back" : "Invert"}</button>
                </div>
          );
        }

        function KmToMiles() {
            return <h3>KM 2 M</h3>;
        }

        function App() {
            const [index, setIndex] = React.useState();
            const onSelect = (event) => {
                setIndex(event.target.value);
            }
            return (
                <div>
                    <h1>Super Converter</h1>
                    <select value={index} onChange={onSelect}>
                        <option value="xx">Select your unit</option>
                        <option value="0">Minutes & Hours</option>
                        <option value="1">Km & Miles </option>
                    </select>
                    {index === "xx" ? "Please select your unit" : null}
                    {index === "0" ? <MinutesToHours /> : null}
                    {index === "1" ? <KmToMiles /> : null}
                </div>
          );
        }
        const root = document.getElementById("root");
        ReactDOM.render(<App />, root);  // App 컴포넌트는 안에 다른 2개의 컴포넌트를 렌더링하고 있음! -> min, km
    </script>
</html>



profile
console.log("불꽃남자 정대만"); 🏀❤

0개의 댓글