Po_tta_tt0
콩심콩 팥심팥 🌱
Po_tta_tt0
전체 방문자
오늘
어제
  • 분류 전체보기 (266)
    • 🐛 회고 (14)
    • 💭 생각 (2)
    • 🤸‍♀️ 내 프로젝트 (16)
      • FISH-NEWS (8)
      • MBTI 과몰입 테스트 (2)
      • twitter clonecoding with TS (4)
      • pilzagenda (2)
    • 👨‍👩‍👧‍👦 팀 프로젝트 (2)
      • 피우다 프로젝트 (0)
      • SEMO(세상의 모든 모임) (1)
      • 마음을 전하는 텃밭 (1)
      • Stackticon (0)
    • 👨‍💻 CS지식 (11)
    • ✍ 공부 (94)
      • JavaScript (21)
      • TypeScript (39)
      • Html (0)
      • CSS (2)
      • React (18)
      • NextJS (7)
      • Vue (1)
      • Python (1)
      • Django (0)
      • 개발환경 & 그 외 (2)
    • 🏄‍♀️ 코딩테스트 (99)
      • 🐍 Python (99)
    • 🐙 Git & GitHub (3)
    • 📑 오류기록 (8)
    • 📚 우리를 위한 기록 (9)
    • 수업 (3)
    • 강의 등 (2)
    • 👩‍🎓 SSAFY (0)
    • 👋 우테코 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • react-router-dom
  • bfs
  • 시뮬레이션
  • 이분탐색
  • Next.js
  • 파이썬 다익스트라
  • 백준 파이썬
  • 플로이드 워셜
  • 문자열
  • 구현
  • 자바스크립트
  • DP
  • BFS + DP
  • 파이썬 감시 피하기
  • dfs
  • 백준 숨바꼭질
  • React
  • 백준
  • js
  • 파이썬

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Po_tta_tt0

콩심콩 팥심팥 🌱

🤸‍♀️ 내 프로젝트/twitter clonecoding with TS

[ Nomad coders ] (의식의 흐름으로 쓰는) twitter clone 타입스크립트로 다시 만들어보기

2022. 1. 28. 20:40
반응형

 

#0.0 ~ #2.2

 

 

 

 

 

 

nomad coders의 twitter clonecoding은 진작 한 번 해봤다.

react를 막 배우기 시작했을 때 해보고 정말 기뻐했던 기억이 난다.

 

그랬던 트위터 클론코딩을 다시 시작하게 된 이유

 

1. 타입스크립트 + 리엑트 실력 향상을 위해

2. 현재 속해있는 react 스터디에서 함께 진도를 나가고 있는 강의 중 하나가 twitter clone coding이기 때문에

3. 새롭게 배운 것들을 이전에 배운 내용에 적용해보면서 새 라이브러리의 쓰임에 익숙해지고 라이브러리의 존재 이유를 스스로 깨닫기 위해

 

 

 

 

 

 

과정

 

 

새로운 트위터 클론 코딩 프로젝트를 타입스크립트 + 리액트로 빌드하고

진작 들었던 강의를 빠르게 들으면서, 각 주 차에 해당하는 학습 내용을 typescript를 사용해 만들어본다.

 

 

 

 

 

 

💻

 

 

 

 

설치

 

react + typescript 설치

npx create-react-app my-app --template typescript

 

 

수업 진도에 따라서

react-router-dom도 설치해주었다

npm I react-router-dom

 

참고로 react-router-dom v5와 v6의 차이는 

https://pottatt0.tistory.com/25

 

🔧[ React-router-dom ] react-router-dom v6 달라진 점

react 강의를 들으면서 react-router-dom의 버전이 맞지 않아 고생을 꽤 했다. 만약 엘리 드림코딩 [ 리액트 개념 정리 + 유튜브 클론 코딩 외 실전 프로젝트 완성 ] 이나 노마드 코더 [트위터 클론코딩]

pottatt0.tistory.com

여기서 한번 작성한 적 있다.

 

 

 

 

💩 문제

 

1. 확장자명 실수 

HashRouter가 먹지 않았다.

문제가 무엇인지 코드만 들여다보고 있었던게 실책이었다.

문제는 코드가 아니라 파일 확장자에 있었다.

확장자명을

Router.tsx가 아닌

Router.ts로 만들어서 생긴 문제였다.

 

당연하다

react-router-dom을 사용하려고 하는데 확장자 자체가 react가 아니었던 것이다.

 

하지만 덕분에 HashRouter과 BrowserRouter의 차이를 알게 되었다.

BrowserRouter은 HTML 5의 history API를 사용해 UI를 업데이트한다 : 동적인 페이지에 적합

HashRouter은 URL의 hash(#)이용해서 검색엔진이 읽지 못한다 : 정적인 페이지에 적합

 

다음에 관련 내용의 블로그 글을 한번 올릴 것 같다.

이렇게 쌓여가는 글(예정) 목록...

 

 

2. 기초적인 실수

interface AppRouterProps {
  isLoggedIn: boolean;
}

const AppRouter = ( isLoggedIn : AppRouterProps) => {
  console.log(isLoggedIn);

이렇게 만들어놓고 

뭐가 문제지..? 왜 isLoggedIn 값이 false가 안나오는거지..? 하면서 고민했다.

console로 찍어본 isLoggedIn 값은

false가 아닌

"isLoggedIn" : false

였다.

 

콘솔창을 보자마자 깨달았다.

props 안에 있는 isLoggedIn을 가져오는 게 아니라

props의 이름을 isLoggedIn으로 하고, 이 것을 가져오고 있었던 거였다 : 만약 isLoggedIn.isLoggedIn을 console로 찍어봤으면 원하는 false값을 얻었을 것이다 

 

const AppRouter = ( {isLoggedIn} : AppRouterProps) => {
  console.log(isLoggedIn);

바로 isLoggedIn을 props의 한 객체로 가져와주고 문제는 해결되었다.

 

 

 

3. typescript는 아직 어렵다

  const onChange = (e: React.FormEvent<HTMLInputElement>) => {
    console.log;
  };

event에 빨간 줄이 그어져서 빠르게 해결했다.

event 뒤에 React와 이벤트 내용, element를 써줘야 한다는 것을 잘 기억하자!

 

 

 

 

 

 

 

 

배움

   {isLoggedIn ? (
          <Route path="/" element={<Home />} />
        ) : (
          <Route path="/" element={<Auth />} />
        )}

항상 Route를 구성할 때 로그인 여부에 따라 다른 컴포넌트를 보여주더라도 같은 path를 이용할 생각을 하지 못했었다.

나라면

Auth의 path="/"

Home의 path ="/home"

으로 두었을 텐데.

어차피 둘 다 시작하는(정보값이 없는) 화면이라는 점에서 같은 경로를 사용해도 되는데 왜 여태까지 항상 다른 경로를 사용하려고 했는지 모르겠다.

 

다시 보니까 더 세부적인 내용이 보이는 것 같다.

 

 

 

 

 

 

+

인프런 웹 게임을 만들며 배우는 react 강의 정리입니다✨

 

 

 

class이용보다 함수형의 이용이 더 편하기 때문에 함수형을 잘 사용하고 있다

훅을 이용하면 class보다 코드를 간결, 직관적으로 쓰고 이해할 수 있다.

게다가 react 자체에서 class보다 hooks를(함수형)을 더 권장하기 때문에 hooks를 이용하는 것이 좋다.

 

개인적으로도 class문법보다 함수형이 편해서 함수형을 거의 항상 이용할 것 같다

하지만 class도 필요할 때가 있을 수 있으니 열심히 배워둬야지

 

 

 

웹팩

여러개의 js 파일(컴포넌트)를 하나로 합치고 쓸데없는 코드를 빼버리고 최적화하는 작업

설치하면 package.json 파일이 생긴다

 

원래는 react, react-dom부터

npm i... 를 찍으면서 하나하나 설치해야 하는데

create-react-app으로 간단하게 설치하는 것이 보편적이다.

 

 

빌드는 다음번에 ㅎㅎ...

항상 빌드에서 어려움을 겪기 때문에 정신이 멀쩡할 때 제대로 듣고 싶다.

오늘은 너무 피곤..

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'🤸‍♀️ 내 프로젝트 > twitter clonecoding with TS' 카테고리의 다른 글

[ Nomad coders ] (의식의 흐름으로 쓰는) twitter clone 타입스크립트로 다시 만들어보기 4  (0) 2022.02.25
[ Nomad coders ] (의식의 흐름으로 쓰는) twitter clone 타입스크립트로 다시 만들어보기 3  (0) 2022.02.11
[ Nomad coders ] (의식의 흐름으로 쓰는) twitter clone 타입스크립트로 다시 만들어보기 2  (0) 2022.02.04
    '🤸‍♀️ 내 프로젝트/twitter clonecoding with TS' 카테고리의 다른 글
    • [ Nomad coders ] (의식의 흐름으로 쓰는) twitter clone 타입스크립트로 다시 만들어보기 4
    • [ Nomad coders ] (의식의 흐름으로 쓰는) twitter clone 타입스크립트로 다시 만들어보기 3
    • [ Nomad coders ] (의식의 흐름으로 쓰는) twitter clone 타입스크립트로 다시 만들어보기 2
    Po_tta_tt0
    Po_tta_tt0
    감자의 코딩하는 블로그 콩심은데 콩나고 팥심은데 팥난다

    티스토리툴바