1) React Query 실습문제

const MenuEdit = () => {
    // #1. 메뉴 수정 기능 구현   
    // 요구사항
    // 1. 현재 메뉴 정보에 맞는 데이터를 서버에서 읽어온 후 , 폼에 바인딩한다.(useEffect+useQuery 사용)
    // 2. 읽어온 데이터가 없는 경우 목록 페이지로 이동시키고 "존재하지 않는 메뉴입니다." 메세지를 출력한다. 
    // 3. useInput훅을 사용하여 폼상태를 관리한다.
    // 4. 수정 버튼 클릭시 다음 내용에 대한 유효성 검사를 진행한다.
    //    - 모든 필드는 반드시 입력되어야 한다. 
    //    - price는 0이상 이어야 한다.
    //    - 유효성 검사 실패시 경고창(allert)을 통해 경고 메세지를 출력한다.
    // 5. 유효성 검사 통과시 서버에 수정요청을 보낸다(useMutation 사용)
    // 6. 수정 완료 후 상세 페이지로 이동시키고, 수정완료 메세지를 출력한다.
    // 7. 중복 제출을 방지하기 위해 제출이 진행되는 동안은 버튼을 비활성화 시킨다.
    // 8. 제출이 진행되는 동안은 로딩 상태를 표시한다.
    //    - <div>Loading...</div>
    // 9. 수정 실패시 에러 메세지를 출력한다.
    //    - <div className="alert alert-danger">에러메세지</div>  

    return (
        <>
            <div className="menu-test">
                <h4>메뉴 수정하기(PUT)</h4>
                <form id="menuEnrollFrm" >
                    <input type="text" name="restaurant" placeholder="음식점" className="form-control"  />
                    <input type="text" name="name" placeholder="메뉴" className="form-control"  />
                    <input type="number" name="price" placeholder="가격" className="form-control"/>
                    <div className="form-check form-check-inline">
                        <RadioGroup id="get-kr" value="kr" name="type" checked={true} onChange={()=>{}} label="한식" />
                        <RadioGroup id="get-ch" value="ch" name="type" checked={true} onChange={()=>{}} label="중식" />
                        <RadioGroup id="get-jp" value="jp" name="type" checked={true} onChange={()=>{}} label="일식" />
                    </div>
                    <div className="form-check form-check-inline">
                        <RadioGroup id="get-hot" value="hot" name="taste" checked={true} onChange={()=>{}} label="매운맛" />
                        <RadioGroup id="get-mild" value="mild" name="taste" checked={true} onChange={()=>{}} label="순한맛" />
                    </div>
                    <br />
                    <input type="submit" className="btn btn-block btn-outline-success btn-send" value="수정" />
                </form>
            </div>
        </>
    )
}
export default MenuEdit;

Last updated