Modify

순9·2023년 12월 13일
0

리액트 게시판

목록 보기
46/54

처음 데이터 입력 폼과 수정 폼의 ui는 동일
대신 수정에는 해당페이지의 id를 받는 형식

//수정할 페이지 id 받아온다
 const { id } = useParams();
 const boardId = Number(id);

기존

const [titleValue, settitleValue] = useState("");
  const [contentValue, setContentValue] = useState("");
const handleWrite = async (e: React.FormEvent<HTMLFormElement>) => {
    e.preventDefault();

    if (!titleValue || !contentValue) {
      window.confirm("제목과 내용을 입력 해주세요");
      return;
    }
    try {
      const userData = {
        did: selectedBoardId, //board에서 불러 온 값
        title: titleValue,
        content: contentValue,
        timedata: new Date(),
        userUid: uidVar,
        isModified: true,
      };
      await dispatch(
        modifyUserData({
          boardId: boardSelectedId,
          boarditem: userData,
        }) as any
      );

      navigate(`/pagemo/${selectedBoardId}`); //수정 된 코드
    } catch (error) {
      console.log(error);
      console.log("입력 오류 입니다");
    }
  };

수정
state 하나로 통합

const [formValue, setFormValue] = useState({
    title: "",
    content: "",
  });
  
   const handleWrite = async (e: any) => {
    e.preventDefault();

    const filedName = e.target.name;
    const fieldValue = e.target.value;

    if (!formValue) {
      window.confirm("제목과 내용을 입력 해주세요");
      return;
    }
    try {
      const userData = {
        did: boardId,
        title: formValue.title,
        content: formValue.content,
        timedata: new Date(),
        userUid: userId,
        isModified: true,
        index: inputDataIdx,
      };
      await dispatch(
        modifyUserData({
          boardId: boardId,
          boarditem: userData,
        }) as any
      );

      setFormValue({
        ...formValue,
        [filedName]: fieldValue,
      });

      navigate(`/page/${boardId}`);
    } catch (error) {
      console.log(error);
      console.log("입력 오류 입니다");
    }
  };
  
  
  return
  <input
                type="text"
                maxLength={30}
                name="title"
                defaultValue={modifyUserDataLast.title} //등록된 데이터 출력
                placeholder="제목을 입력해주세요."
                onChange={(e) =>
                  setFormValue({ ...formValue, title: e.target.value })
                }
              />
               <textarea
                defaultValue={modifyUserDataLast.content}
                name="content"
                placeholder="내용을 입력 해주세요"
                onChange={(e) =>
                  setFormValue({ ...formValue, content: e.target.value })
                }
              />
              

form 컴포넌트와 크게 다른 부분은 없다

profile
1. 사용법 익히기 2. 원리가 뭔지 찾아보기 3. 원리를 공부하기

0개의 댓글