Skip to content

React 세미나2 로그인 안된 상태에서는 접근금지 #237

@TheoLee72

Description

@TheoLee72

import './New.css';
import {useCounterContext} from "./CounterContext";
import Header from "./Header";
import {useNavigate} from "react-router-dom";
import React, {useState} from "react";

function New() {
    const {addMenu, menus, loginStatus} = useCounterContext();
    const [enteredNum, setEnterdNum] = useState("");
    const changeEnteredNum = (e) => {

        const value: string = e.target.value;
        const removedCharacterValue = value.replace(/[^0-9]/g, '');

        const removedCommaValue: number = Number(removedCharacterValue.replaceAll(",", ""));
        setEnterdNum(removedCommaValue.toLocaleString());
    };
    const navigate = useNavigate();
    const Goout = () => {
        navigate("/stores/1");
    };

    const addbutton = () => {
        const inputName = document.getElementById('name').value;
        const inputType = document.getElementById('typeselect').value;
        const inputImage = document.getElementById('image').value;
        const inputDes = document.getElementById('description').value;
        if (inputName === "" || enteredNum === ""|| inputType=== "") {
            alert("빼먹은 부분이 없느지 확인해주세요");
        } else {
            let isexist = menus.some((menu)=>menu.name===inputName);
            if (isexist === false) {
                if (inputName.length <= 20) {
                    if (Number(enteredNum.replaceAll(",", ""))>=100 && Number(enteredNum.replaceAll(",", ""))<=1000000) {
                        addMenu(inputName, enteredNum, inputImage, inputType, inputDes);
                        Goout();
                    }
                    else {
                        alert("가격이 범위에 맞지 않습니다. (100<price<1000000)");
                    }
                }
                else {
                    alert("이름이 너무 깁니다.");
                }
            }
            else {
                alert("동일한 이름의 제품이 이미 존재합니다.");
            }
        }
    };

    if (loginStatus === true)
    {
        return 1;
    }
    else
    {
        alert("GoOut");
        navigate(-1);
        return 0;

    }
    {/*return (
            <>
                <Header/>
                <section className="Newsection">
                    <div className="title">새 메뉴 추가</div>
                    <div className="nameadd-str">이름</div>
                    <input type="text" placeholder="맛있는와플" id="name" className="nameadd-box"/>
                    <div className="typeadd-str">종류</div>
                    <select id="typeselect" className="typeadd-box">
                        <option value='' selected>상품의 종류를 선택하세요</option>
                        <option value='coffee'>커피</option>
                        <option value='waffle'>와플</option>
                        <option value='beverage'>음료</option>
                    </select>
                    <div className="priceadd-str">가격</div>
                    <input type="text" value={enteredNum} onChange={changeEnteredNum} placeholder="5,000"
                           className="priceadd-box"/>
                    <span className="unit">원</span>
                    <div className="imageadd-str">상품 이미지</div>
                    <input type="text" placeholder="이미지 주소를 입력해주세요" id="image" className="imageadd-box"/>
                    <div className="desadd-str">설명</div>
                    <textarea placeholder="상품에 대한 자세한 설명을 입력해주세요" id="description" className="desadd-box"></textarea>

                </section>
                <button className="add" onClick={addbutton}>
                    추가
                </button>
                <button className="close" onClick={Goout}>
                    취소
                </button>
            </>

        );*/}


}

export default New;

menus/new에 loginstatus가 false면 접근하지 못하게 하려고 합니다.
일단 new 다 만들어두었고 그 기능만 추가하면 됩니다.
하지만 테스트하는 과정에서 alert는 두번 뜨고 navigate(-1)은 작동을 안하는 것을 확인했습니다.
어떻게 고쳐야하나요?

Metadata

Metadata

Assignees

No one assigned

    Labels

    ReactReact 관련 내용html / css / jsjavascript 관련 내용question질문으로 사용될 이슈

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions