React fetch를 이용하여 submit 이벤트 구현하기

Chaeeun Lee·2022년 9월 30일

내가 참고한 블로그는 여기다

그중에서도 마지막에 있는 POST request using fetch with set HTTP headers 부분을 참고했다.

포기하고 수업을 들을까 했는데 포기하지 않았던 나를 칭찬한다. 구현하고나니까 너무너무너무 뿌듯하다 ㅎㅎ

📌 코드

const handleSubmit = (e) => {
    e.preventDefault();
    /* 등록 버튼을 누르면 게시물이 등록이 되며 home으로 리다이렉트 되어야 합니다. */
    /* 작성한 내용과 useNavigate를 이용하여 작성해보세요. */
    const requestOptions = {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        Authorization: "Bearer my-token",
        "My-Custom-Header": "foobar",
      },
      body: JSON.stringify({
        title: title,
        body: body,
        author: author,
        likes: 0,
      }),
    };
    fetch("http://localhost:3001/blogs", requestOptions)
      .then((response) => response.json())
      .then((data) => this.setState({ postId: data.id }));

    navigate("/");
    window.location.reload();
  };

💡 약간의 설명

  • 작성한 form을 서버에 추가하기 위하여 method는 POST로 했다.
  • body 부분은 서버의 데이터 형식에 맞게 조금 수정했다.
  • fetch의 첫번째 인자로 서버의 url을 넣어줬다.
  • 버튼을 누르면 home페이지로 돌아갈 수 있도록 useNavigate를 사용했다.
  • window.location.reload(): form을 작성하고 등록을 눌러준 이후 게시글 페이지로 가면 게시글이 추가되어있지 않은 상태다. 새로고침을 해줘야 게시글이 추가된다. 자동으로 새로고침되도록 해당 코드를 추가해줬다.

💡 아쉬운 점

  • headers 부분을 잘 이해하지 못해서 그대로 복사해왔다. 저렇게까진 안해줘도 될 것 같다.
  • {
        "id": 1,
        "title": "안녕하세요?",
        "body": "반갑습니다",
        "author": "ichenny",
        "likes": 0
      },
    원래 서버의 형식은 위와 같다. id가 제일 위에 온다. 하지만 위의 코드대로하면 다음과 같이 id가 제일 마지막에 위치한다.
    {
      "title": "새로고침",
      "body": "새로고침",
      "author": "김코딩",
      "likes": 0,
      "id": 10
    }
    이건 어떻게 수정해야할지 감도 안잡힌다.

리액트 페이지 이동 시 스크롤이 제일 위에 오게 하는 방법 : 참고블로그 구현해야함!

profile
나는야 뚝딱이 개발자야

0개의 댓글