벨로그 정리 링크
자바스크립트의 유연한 특성 때문에 작성이 편한 반면, 파일이 많아지면 생산성이 떨어진다는 점 때문에 타입스크립트를 많이 사용한다.
반드시 자바스크립트를 이용해 앱을 개발해야 하는 상황에서는 이러한 문제점을 피하기 위해 PropTypes를 활용하는 것을 권장한다.
PropTypes는 부모로부터 전달받은 prop의 데이터 type을 검사한다. 자식 컴포넌트에서 명시해 놓은 데이터 타입과 부모로부터 넘겨받은 데이터 타입이 일치하지 않으면 콘솔에 에러 경고문이 띄워진다. 간단한 예시를 통해 propTypes의 장점을 알 수 있다.
보통 App.js에 이동할 페이지 컴포넌트들을 정의한다.
스타일에 따라 layout으로 분리하거나 몇개로 쪼개서 관리할 수 있겠지만
각 url에 맞는 페이지 컴포넌트들을 임포트 해줘야 하는 일은 피할 수 없다.
../../pages/user/Login
../../pages/user/Logout
../../pages/user/Setting
../../pages/main/Main
이러한 구조는 Craco를 활용한 절대경로 설정으로 개선 가능하다.
@절대경로/나머지경로
//fetch
const url ='http://localhost3000/test`
const option ={
method:'POST',
header:{
'Accept':'application/json',
'Content-Type':'application/json';charset=UTP-8'
},
body:JSON.stringify({
name:'sewon',
age:20
})
fetch(url,options)
.then(response => console.log(response))
//axios
const option ={
url ='http://localhost3000/test`
method:'POST',
header:{
'Accept':'application/json',
'Content-Type':'application/json';charset=UTP-8'
},
data:{
name:'sewon',
age:20
}
axios(options)
.then(response => console.log(response))
동일한 기능을 수행하는 코드이며, 간단한 코드이다.
위 코드에서 차이점을 찾아보자.
Fetch()
는 body 프로퍼티를 사용하고,axios
는 data 프로퍼티를 사용한다.Fetch
의 url이 Fetch()
함수의 인자로 들어가고, axios
에서는 url이 option
객체로 들어간다.Fetch
에서 body부분은 stringify()로 되어진다.이처럼 axios는 HTTP 통신의 요구사항을 컴팩트한 패키지로써 사용하기 쉽게 설계 되었다.