July 18, 2021 • ☕️ 6 min read
우테코 24주차 기록
백엔드와 사진 데이터를 어떻게 보내고 받을 것인지 많은 논의가 있었다. 결국 JSON 형식 대신 form-data 형식으로 body를 전송하기로 했다. 잘 저장되고, 잘 받아지고 있다! 아무래도 백엔드 인원이 많고, API가 빨리빨리 처리되다 보니 프론트엔드 측에서 살짝씩 밀리고 있었어서 조금 부담감과 긴장감이 생겼다.
결론: react-query 쓰자! 🙆♂️🙆♀️
<input type="file" />
다루는 법🍀 여기서 읽기
forwardRef
를 사용할까?🍀 여기서 읽기
🍀 여기서 읽기
🍀 여기서 읽기
react-router-dom의 Link
를 통해 페이지를 라우팅하면 문제없이 동작하지만, 직접 주소창에 /upload
등을 입력하여 접속하거나 새로고침을 하면 404 에러가 발생한다. 특정 주소로 바로 접속 시 서버 쪽 라우터에서 먼저 연결할 곳이 있는지 확인하는데, /upload
와 같은 URL 엔드포인트는 서버쪽 라우터가 아닌 react-router로 동작하는 SPA 라우터기 때문이다.
historyApiFallback
옵션을 켜서 문제를 해결할 수 있다. history API를 사용하는 SPA에서, historyApiFallback
을 사용하면 404 에러 발생 시 index.html
로 리다이렉트 해준다.
// webpack.config.js
devServer: {
// ...
historyApiFallback: true,
},
Ref
webpack은 기본적으로 output에 설정해둔 경로(default는 /
)에서 번들링된 파일(bundle.js)를 가져오려고 한다.
페이지 reload 시 기본적으로 서버에 해당 주소로 요청이 가는데, 상기했듯 SPA에서 서버는 주소에 해당하는 페이지를 가지고 있지 않다. 이러한 요청은 react-router가 클라이언트 단에서 처리하여, 어떤 JavaScript를 렌더링할지 결정한다. 따라서 서버가 특정 주소로의 접근을 이해할 수 있도록 만들어줘야 한다.
서버(devServer
)와 클라이언트(output
)의 route를 동일하게 맞춰줌으로써 문제를 해결할 수 있다. webpack 설정을 통해 번들링된 파일을 항상 같은 곳에서 가져올 수 있도록 수정한다.
// webpack.config.js
output: {
// ...
publicPath: '/',
},
devServer: {
// ...
publicPath: '/',
},
Ref
두 번째 코로나 검사 받았다 😷 아팠다.
리팩토링할 일들이 쌓여간다… 평일 6시 퇴근이라는 유토피아를 살아가는 팀은 없었다. 다들 누가 더 오래 버티나 내기 중. 그래도 정말 갈수록 재미있어지는 것 같다.