useEffect
용도:
- 처음으로 Component를 Rendering한 이후에 어떤것을 하는 것.
- 어떤 화면을 보여줄 때 단순히 UI만 보여주는 것이 아니라 원하는 데이터를 넣어서 보여줘야 한다!
- 그리고 이러한 데이터는 데이터베이스에 있는 경우가 많다.
- 그런 작업은 렌더링 이후에 작업이 가능하다.
- 그래서 데이터베이스에서 데이터를 불러오는 그런 일을 useEffect를 사용해서 컴포넌트가 렌더링된 이후에 사용한다.
- 컴포넌트가 마운트가 되었거나 업데이트 될 때마다 호출된다.
- 텅텅비어진 배열을 두번째 인자로 전달한다면, 마운트가 되었을 때만 호출이 된다.
- 선택적으로 원하는 변수를 배열로 전달하면 걔네가 바뀔 때만 호출됨
- 아무것도 넣지 않으면 업데이트 될 때마다 호출이 되는 것이다!
- useSate와 useEffect는 import를 해줘야한다.
Javascript - Fetch를 먼저 사용해보자.
기본적인 것이니깐 먼저 써보자
Postman을 이용하면 어떻게 쓰는지 코드별로 안내되어있음
fetchapi에서 response.json()으로 받아올 수 있음
위코드를 해석하면
컴포넌트가 마운트될 때만 (useEffect에서 두번째 인자 빈 배열로 두면됨[])
api를 get으로 불러와서 response되면 json으로 받아오고 그 걀과값은 result.items를 videos라는 배열에 useState를 이용하여 담아준다. 그것이 const [videos, setVideos] = useState([]);
컴포넌트에 관련된 모든 것들을 폴더링해서 작업을 한다.
css, jsx, 테스트 파일 등 다 해당 폴더에 넣기
video_item.jsx가 있고 video_list.jsx가 있다.
vidoItem은 단순히 props로 받아온 것을 보여주는 식으로 만들어보자
video_item.jsx
const VideoItem = props => <h1>{props.title}</h1>
//props로 받아온 것을 리턴하는 함수를 만들어 봄
//props로 무언가를 받아옴
//app.jsx를 확인해보니 {videos} 즉 api로 받아온 그 데이터들의 배열을 받아온거를 props로 list에 넘김
const VideoList = props => (
<ul> //psops로 받아온 배열의 비디오를 맵으로 도는데 한개당 videoItem 컴포넌트를 호출하여 아이디랑 비디오를 넣어줌
{props.videos.map(video => // 비디오 아이템에서는 props로 받은 비디오의 sippet title을 보여줌
<VideoItem key={video.id} video={video} /> //unique한 키를 써야함.
))}
</ul>
);
// key는 요소리스트를 만들 댸 포함해야하는 특수한 문자열 속성임
// key는 리액트가 어떤 아이템이 바뀌었는지 혹은 추가되었는지 혹은 삭제되었는지를 인식하게 해줌
// 그래서 key= {video.id}를 추가함
export default VideoList; //함수
전달된 props(즉 videoItem의 요소를 확인하는 방법)
아하~ video.snippet에 title이 있구나!
//잘안되면 전달된 state확인 props확인
모든 단위가 컴포넌트임.
VideoList는 아래와 같이 리스트를 만들어주는 컴포넌트이고, 그안에 쓰인 Video아이템은 각 하나의 비디오의 요소의 이름을 뿌려주는 것
<ul> 아이템 </ul>
<ul> 아이템 </ul>
<ul> 아이템 </ul>
.
.
* 앨리의 드림코딩 복습
'[React] Front-End' 카테고리의 다른 글
[FE] React.js : props deconstructing / CSS로 컴포넌트 스타일링 (0) | 2021.06.10 |
---|---|
[FE] React : Redux는 왜 쓸까 (0) | 2021.06.09 |
[FE] React : REST API (0) | 2021.05.24 |
[FE] React / Git or Netlify로 배포 (0) | 2021.05.22 |
[FE] React / ReactHooks (0) | 2021.05.17 |