2022-02-25 TIL

Fact

  • 프로그래머스 내적, 소수 만들기 문제를 풀었다.
  • 추가한 문제 가져오기, 문제 소장하기 버튼을 누르면 저장할 수 있고, 소장한 문제를 가져올 수 있도록 구현했다.
  • 기존에 서버에서 데이터를 가져오지 못하면 사용자에게 데이터를 다시 요청하시겠습니까? 버튼을 제공했는데, 버튼을 누르면 다시 페이지를 새로고침하도록 했다.
  • 기존에 서버에서 어떤 유저인지 판별하는 방식을 리퀘스트 헤더에 json token을 담아서 보내주도록 했는데, 추가한 문제나 소장한 문제를 가져오는 페이지에서 새로고침을 누르면 json token을 못 읽는 문제가 발생해서 useEffect에서 데이터를 가져올 때 유저 상태가 변경될 때 데이터를 가져오도록 수정했다.

Feelings

  • 오늘 맘에 안 드는 변수명이 있어서 해당 변수명을 전부 수정했다. 처음 변수 이름이나 컴포넌트 이름을 설정할 때 신중하게 이름에서부터 목적이 드러나게 작성하도록 하자.

Findings

아래 코드를 사용하면 현재 페이지로 새로고침이 가능하다.

const location = useLocation()

const handlRestart = () => {
  window.location.replace(location.pathname)
}

아래처럼 populate 안에서 또 populate가 가능하다.

const carts = await QuizCart.find({
  user: userId,
}).populate({
  path: 'quiz',
  populate: {
    path: 'user',
  },
})
  • useEffect 같은 deps에 객체를 넣지 말고 객체를 대표할 수 있는 값 (id, 또는 JSON.stringify)를 사용하는 게 좋다.

Future Action

  • 프로젝트 크기가 커질수록 테스트의 필요성을 느낀다. E2E 테스트를 고려하고 있다.