참 쉽게만 생각했던 SNS 기능들을 실제로 개발하려니 생각할 점이 한 두개가 아니였다.
좀 더 일찍 이런 고민을 했어야 하나? 싶기도 하다가
이제라도 해보는게 어디야! 하고 다시 마음을 다잡아본다!
1. 텍스트를 입력한다
2. text를 입력하면 파일업로드 input창이 나온다
3. 파일업로드를 하고 이미지 업로드 버튼을 누른다
4. 내가 방금 업로드한 image의 preview를 보여준다
5. alert창 등록하시겠습니다? 클릭하면 마이페이지 메인으로
vs
1. 업로드 페이지에 들어오면 자동으로 게시글이 생성된다.
2. text 입력하고 input창 나오게 한다
3. 파일 업로드를 하고 이미지 업로드 버튼을 누른다
4. 그 순간 내가 이전에 자동으로 생성했던 게시글에 이미지가 붙고, 거기서 preview 를 가져와서 보여준다
5. alert창 등록하시겠습니다? 클릭하면 마이페이지 메인으로
두번째 방식이 그나마 근접했다!
"content-type": "multipart/form-data"
를 붙이지 않으면 에러가 발생!)그러다 정착한 최종 방식!
1. axios wrapper 함수를 만들어 localStorage에서 가져온 토큰을 header에 장착
2. redux-toolkit을 이용해 함수를 만들어 상태를 스토어에 저장
3. Routes.js에서 useEffect를 이용해 두번째에서 만든 함수 실행
토큰은 로그인과 관련이 되어있으니 로그인페이지에서 저장했다가 다른 페이지에서 불러오는게 맞다고 생각했는데
두 번째 시도를 하면 새로고침 할 때마다 로그인이 풀려서 상당히 처리가 귀찮게 된다!
최종 방식대로 적용하면 Routes가 모든 페이지를 감싸고 있기 때문에 새로고침을 하거나 코드에 변화가 생겨도 토큰 유효기간만 길다면 문제없을 무!
토큰을 저장할 때 login POST 요청시 저장하는게 아니라 users/self
에서 GET 요청으로 받아와 저장하는 게 중요한 뽀인트!
(물론 백앤드 분들의 재량에 따라 달라질 수 있는 문제다!)
코드는 완성되면 추후 공개 예정쓰... 🌱
요즘 시간이 많이 생겨서 어떻게 하면 더 효율적인 로직일까를 고민하고 있는데
그러다 보니 완벽하지 않으면 치지 않고 계속 검색만 하는 나쁜 습관이 생기고 있다.
고민은 조금 줄이고, 고치더라도 일단 쳐보고 고치는 습관을 길러보자..ㅠㅠ