본문 바로가기

TIL✨

TIL(41)

1.만난 문제 (오류도 아니였음 진짜 문제였음)😿

  db.json연결을 다하고 post로 내 글을 보내는것까지 성공을 했다.

 근데 콘솔에 찍어보니까 이상했다. state변경될때마다 post가 되고 있는거였다. 그러다 보니까 데이터 입력할때동안 계속해서 post가 되  어서 

 이런식의 문제가 생겼다.

아무래도 내가 useSelect에서 article이라는 이름으로 state를 들고왔는데 얘가 실시간으로 변경될때마다 리렌더링이 되므로

json-server에도 똑같이 리렌더링이 될때마다 글이 올라가는 것 같다라는 생각이 들었다.

 

2.시도🔥

그럼 이미 변경되고 있는 state가 아니라 setState를 통해서 변경이 되어진 state를 보내자!

그럼 일단 <form>안에 있는 버튼이 눌리면 onsubmit이 실행되고 있었는데 그 안에 dispatch를 실행하는 함수와 post로 가는 함수가

두 개나 들어가게되었다.

그러다보니 코드도 보기 복잡하고 실행도 엉켰다.

 

그래서 handleSubmit(post로 보내는 함수)=()=>{

 여기 안에 Post 를 하고 .then(여기다가 dispatch하는 함수를 적었다.)}

//post함수
handleSubmit=()=>{

 여기 안에 Post 를 하고.then(여기다가 dispatch하는 함수를 적었다.)}

실행결과 갑자기 썰물오듯 오류가 빗발쳤다.

아직 습관이 안되어있지만 오류가 나면 캡쳐해야지

 

3.해결🌟

나는 지금 카테고리값과 주제 +사용자+비밀번호+내용 이렇게 많은 내용을 보내야했기때문에

이 내용들을 하나의 변수로 만드는 작업을 했다.

cosnt[title,setTitle]=useState("")
.
.
.

const submitHandler = (e) => {
    e.preventDefault();
    const arc = {   //필요한 내용들을 객체로 만든다.
      title,
      userName,
      selected,
      pwd,
      content,
      date: today.toLocaleString(),
    };
    axios.post("http://localhost:3000/posts", arc).then(() => {
      alert("업로드 완료");
      window.location = "/";   //글목록페이지로 간다.
    });
  };

이렇게 해서 깔끔하게 올라가는 것을 확인했다.

 

4.알게된거🧐

가지고 있는 데이터가 많은거 하나씩 보낼생각하지 말고 묶어서 깔끔하게 보내자

진작에 알았으면 밤에 잠도 못자고 그런 고생을 안했을텐데ㅋㅋ이렇게 또 하나를 배워갑니다.

그리고 구글링을 하면서 여러개를 읽어보고 취합해서 가져와보자라는 것도 배웠다.

부분 부분 필요에 따라서 가져와가지고 내 프로젝트에 잘 취합 해보는것도 좋은 능력인것같다.

그리고 거기서 좋은부분만 따로 떼와서 써먹을줄도 알아야하는것같다. 영어공부하자!

 

 

'TIL✨' 카테고리의 다른 글

iterable error _TIL(44)  (0) 2022.12.29
parameter_TIL(42)  (0) 2022.12.28
글 작성페이지 input 나누기 TIL(39)  (0) 2022.12.23
React-router_TIL(37)  (0) 2022.12.20
불변성_TIL(36)  (0) 2022.12.19