React Monster 과제를 통한 fetch/lifecycle를 이해하고 map과 filter적용해보기 🤷
** 컴포넌트를 생성할 때는 constructor -> componentWillMount -> render -> componentDidMount
순으로 진행된다
** 컴포넌트를 제거할 때는 componentWillUnMount만 실행
** 컴포넌트의 prop이 변경될땐 componenetWillReceiveProps -> shouldComponentUpdate-> componentWillUpdate -> render -> compnenetDidUpdate
순으로 진행된다.
LifeCycle Method
는 한국어로 생명주기 메서드로 컴포넌트가 브라우저상에 나타나고, 업데이트되고, 사라지게 될 때 호출되는 메서드들이다.
컴포넌트를 처음 렌더링하기 전이나 직후에 딱 한번만 처리해야 하는 작업이라던가, 컴포넌트 업데이트 전후에만 일어나야 하는 작업 등등 필요한 경우에 컴포컴포넌트의 Life Cycle 메서드를 이용하면 불필요한 업데이트를 방지할 수 있다.
라이프사이클은 총 3가지 카테고리로 나눌 수 있는데 바로 mount
, unmount
, update
다.
출처: https://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/
-Mount는 컴포넌트가 호출되는 상태 (DOM 으로 들어간 상태)
를 의미하며, UnMount는 컴포넌트가 더 이상 필요 없는 상태
를 의미한다.
componentDidMount
가 실행된다.2) Updating
: props
나 state
값에 변화가 일어 났을 때,아래가 re-render
되게된다. 기본적으로 우리가 다루고 아는 부분은 render()가 re-render 된다는 부분 이지만 다른 method가 있다면 아래 해당하는 method도 다시 업데이트가 되는 것 이다.
+render()
+componentDidUpdate()
+static getDerivedStateFromProps()
+shouldComponentUpdate()
+getSnapshotBeforeUpdate()
3) UnMounting
: DOM에서 해당 Component를 제거 할 때 사용 된다.
componentWillUnmount()
: 보통 timers 를 무효화 시키거나, newwork request를 없앨 때, 인데, setState()를 통해 상태를 업데이트하는것이 아니다. 왜냐하면 re-render 시키려는게 아니라 아예 없애려고 하는 기능이기 때문
이다.
Fetch는 한번만 불러와야 하기 때문에 render 안에 위치하면 loop이 돌 수 있다. 그렇기 때문에 한번 render 되는
ComponentDidMount()
에 위치시켜야 한다.
fetch는 필요한 데이터를 받아서 component형태로 사용할 때 주로 사용하는 방식
이며 절차는 아래와 같다.
아래의 경우는 get method로 불러올 때의 경우이고 , API를 불러오는 method가 post인 경우 method정보를 인자로 받아야 하기 때문에 API 주소형태가 다를 수 있다.
fetch("http~~~~~1")//API 주소가 string 형태로 들어감
.then(response => response.json())// JSON BODY를 JS로 변환해줌
.then((response) => this.setState ({users : response})
//받은 데이터를 user로 setState에 저장해줌, 보통이런형태로 사용되며,
//데이터가 잘 들어온지 확인하려면 console.log로 확인해보면 된다.