인프런 커뮤니티 질문&답변

얼티밋님의 프로필 이미지
얼티밋

작성한 질문수

코드로 배우는 React with 스프링부트 API서버

모달 컴포넌트 제작

모달이 뜨질않습니다....

작성

·

369

0

모달이 작동하지않아서 혹시 몰라서 카페에 올라와있는 소스코드를 덮어씌어도 모달이 뜨질않습니다.. 분명 데이터는 등록되는데 result값도 제대로 들어오는데도 불구하고 뜨질않더라구요.. 아래코드는 카페에 올라와있는 코드를 제 프로젝트에 인식시켜본 코드입니다.

 

import React, {useState} from 'react';
import ResultModal from "../common/ResultModal";
import {postAdd} from "../../api/todoApi";
import userCustomMove from "../../hooks/userCustomMove";


const initState = {
    title:'',
    content: '',
    dueDate: ''
}

const AddComponent = () => {

    const [todo, setTodo] = useState({...initState})

    const [result, setResult] = useState(null) //결과 상태

    const {moveToList} = userCustomMove() //useCustomMove 활용

    const handleChangeTodo = (e) => {

        todo[e.target.name] = e.target.value

        setTodo({...todo})
    }




    const handleClickAdd = () => {

        //console.log(todo)
        postAdd(todo)
            .then(result => {
                console.log(result)

                setResult(result.TNO) //결과 데이터 변경
                setTodo({...initState})

            }).catch(e => {
            console.error(e)
        })
    }

    const closeModal = () => {

        setResult(null)
        moveToList()  //moveToList( )호출

    }
    return (
        <div className = "border-2 border-sky-200 mt-10 m-2 p-4">

            {/* 모달 처리 */}

            {result ? <ResultModal title={'Add Result'} content={`New ${result} Added`} callbackFn={closeModal}/>: <></>}


            <div className="flex justify-center">
                <div className="relative mb-4 flex w-full flex-wrap items-stretch">
                    <div className="w-1/5 p-6 text-right font-bold">TITLE</div>
                    <input className="w-4/5 p-6 rounded-r border border-solid border-neutral-500 shadow-md"
                           name="title"
                           type={'text'}
                           value={todo.title}
                           onChange={handleChangeTodo}
                    >
                    </input>

                </div>
            </div>
            <div className="flex justify-center">
                <div className="relative mb-4 flex w-full flex-wrap items-stretch">
                    <div className="w-1/5 p-6 text-right font-bold">CONTENT</div>
                    <input className="w-4/5 p-6 rounded-r border border-solid border-neutral-500 shadow-md"
                           name="content"
                           type={'text'}
                           value={todo.content}
                           onChange={handleChangeTodo}
                    >
                    </input>
                </div>
            </div>
            <div className="flex justify-center">
                <div className="relative mb-4 flex w-full flex-wrap items-stretch">
                    <div className="w-1/5 p-6 text-right font-bold">DUEDATE</div>
                    <input className="w-4/5 p-6 rounded-r border border-solid border-neutral-500 shadow-md"
                           name="dueDate"
                           type={'date'}
                           value={todo.dueDate}
                           onChange={handleChangeTodo}
                    >
                    </input>
                </div>
            </div>
            <div className="flex justify-end">
                <div className="relative mb-4 flex p-4 flex-wrap items-stretch">
                    <button type="button"
                            className="rounded p-4 w-36 bg-blue-500 text-xl  text-white "
                            onClick={handleClickAdd}
                    >
                        ADD
                    </button>
                </div>
            </div>
        </div>
    );
}

export default AddComponent;

 

답변 1

0

구멍가게코딩단님의 프로필 이미지
구멍가게코딩단
지식공유자

모달이 보이는데 가장 중요한 부분이 비동기로 가져온 결과입니다.

 

postAdd(todo)
.then(result => {
   console.log(result)

   setResult(result.TNO) //결과 데이터 변경 

부분에서 console.log(result)의 결과가 출력될때 어떻게 되는지 알 수 있을까요?

 

혹시 TNO의 대 소문자가 틀릴수도 있으니까요..

 

아... 그리고 질문하신 내용의 코드를 공유하거나 메일로 주시거나 기타 등등의 방법을 좀 고민해 주시면 좋겠습니다. 에러를 잡고 싶은데 돌려볼 수가 없어서 답답하네요 ㅠㅠ

얼티밋님의 프로필 이미지
얼티밋
질문자

죄송합니다;; 서버쪽코드 실수였습니다;;;

이런식으로 넣어놨더라구요;;;;;

return Map.of("TNO: ", tno);
얼티밋님의 프로필 이미지
얼티밋

작성한 질문수

질문하기