리액트는 단방향 데이터 흐름을 가지고 있기 때문에 이 특징을 유념하면서 "데이터가 흘러갈 길"을 만드는 것이 중요하다.
이문제는 상위 컴포넌트에서 state로 데이터를 넘겨주는 이벤트 핸들러를 구현하는 방법으로 해결할 수 있다.
- constructor
1-1 state는 여기에 둘게 끝!- Render: state에 인포메이션이 있어?
2-1 state에 정보가 있구나, 그럼 바로 가져갈게! component에 뿌리는 함수 실행시킬게!
2-2 정보가 없구나? 일단 loading 페이지 render 시킬게 끝!- componentDidMount: render 끝나면 그럼 새롭게 fetch해서 인포메이션에 넣어줄게!(5)
- 인포메이션을 component에 뿌리기: state 가져와서 map을 이용해 component에 뿌려줄게!
- 새롭게 fetch해서 인포메이션에 넣기" 나는 순서가 중요한 함수야 (async)
5-1. 새롭게 정보가 필요해? 그럼 fetch하는 함수 불러서 값 가져올게 (6) 니가 완료되어야 그 값을 가지고(await) 다음 내용을 실행할 수 있어.
5-2. 그리고 그 값을 setState해서 state에 넣어주겠어 끝.- fetchAPI: query나 상세 요청내용 주면 fetch api로 response 가져다 줄게, 혹시 에러아면 알려줄게!
- response로 정보받아서 setState하기 : response 전달해주면 setState할게
- setState: state가 변경되었네? 그럼 비교해보고 다시 render 해야겠다.