컴포넌트구현과 핸들러체인지포넌트구현과 핸들러체인지

mgkim·2025년 1월 2일
1

react

목록 보기
15/36

데이터구조

const coffeeData = {
Starbucks: {
Americano: 4500,
Latte: 5000,
Cappuccino: 5500,
},
BlueBottle: {
Americano: 6000,
Latte: 6500,
Mocha: 7000,
},
Hollys: {
Americano: 4000,
Latte: 4500,
CaramelMacchiato: 5500,
},
};

컴포넌트 구현

import { useState } from "react";
function CoffeePriceApp() {
const coffeeData = {
Starbucks: {
Americano: 4500,
Latte: 5000,
Cappuccino: 5500,
},
BlueBottle: {
Americano: 6000,
Latte: 6500,
Mocha: 7000,
},
Hollys: {
Americano: 4000,
Latte: 4500,
CaramelMacchiato: 5500,
},
};

const [brand, setBrand] = useState("");
const [menu, setMenu] = useState("");
const [price, setPrice] = useState(null);

const handleBrandChange = e => {
    setBrand(e.target.value);
    setMenu(""); // 브랜드 변경 시 메뉴 초기화
    setPrice(null); // 가격 초기화
};

const handleMenuChange = e => {
    setMenu(e.target.value);
    setPrice(coffeeData[brand]?.[e.target.value] || null); // 가격 설정
};

return (
    <div>
        <h1>커피 메뉴 가격 조회</h1>
        <div>
            <label>
                브랜드:
                <select value={brand} onChange={handleBrandChange}>
                    <option value="">선택하세요</option>
                    {Object.keys(coffeeData).map(brand => (
                        <option key={brand} value={brand}>
                            {brand}
                        </option>
                    ))}
                </select>
            </label>
        </div>
        {brand && (
            <div>
                <label>
                    메뉴:
                    <select value={menu} onChange={handleMenuChange}>
                        <option value="">선택하세요</option>
                        {Object.keys(coffeeData[brand]).map(menu => (
                            <option key={menu} value={menu}>
                                {menu}
                            </option>
                        ))}
                    </select>
                </label>
            </div>
        )}
        {price !== null && (
            <h2>
                {brand} {menu}의 가격은 {price}원입니다.
            </h2>
        )}
    </div>
);  }
    export default CoffeePriceApp;
profile
@lala.love_garden.lala

2개의 댓글

comment-user-thumbnail
2025년 1월 2일

내가 커피브랜드를 치면 메뉴를 치면, 가격이 뿅 나오게 할수 있니?

1개의 답글