npm i axios 로 터미널에 입력하여 설치axios 를 import 한다componentDidMount()에서 axios로 API 호출axios.get() 함수의 인자에 URL을 전달해서 API를 호출한다.axios.get() 을 포함하고 있는 함수의 실행이 끝날 때 까지 시간이 걸린다라고 알려줘야한다.getMovie() 함수 기다린 후 axios.get() 함수가 반환 데이터를 잡는다. getMovie() function을 만들고 그 함수 안에 axios.get()이 실행되도록 한다. 이 function이 반환한 값을 movies에 저장한다.componentDidMount()가 실행되면, this.getMovies가 실행된다.
async 와 await 키워드가 필요하다.getMovies()에 async를 붙이고 axios.get()에 await을 붙인다.async 는 js에게 getMovies function이 비동기라고 알려준다.await은 js에게 axios.get() function의 실행완료를 기다렸다가 끝나면 진행하라고 알려준다.영화 앱의 실행 순서
리액트 앱 launch -> render() funcion -> 최초의 state에는 isLoading, movies 가 존재 -> isLoading 은 true, movies는 array(length === 0) 이다. -> 최초의 실행화면은 Loading... 이 rendering된다.
App component Mounting -> componentDidMount() function Launch -> getMovies() funcion Launch -> 시간이 소요되는 axios.get()포함이 되어있다. -> getMovies() function에 async add , axios.get() funcion에 await add -> async , await은 짝이다.
const {
data: {
data: { movies },
},
this.setState({ movies: movies}) 말고 this.setState({ movies }) 로 수정할 수 있다.isLoading의 값을 false로 수정해준다.this.setState({ movies, isLoading: false }) 이렇게 영화 데이터를 가져왔고 , 로딩 상태까지 변경했다. 다만 영화 데이터는 출력하고 있지 않은데, 진행하려면 movie state을 화면에 그려야한다. 그레서 Movie Component를 만들어야한다.
Movie.propType ={}안에 값들을 채워서 필요한 데이터들을 맞는 값만 받아올수있게 설정해준다.?sort_by=rating을 붙여서 평점 내림차순으로 영화데이터를 가져올 수 있다.We are ready 자리에 movies.map()을 사용한다 import Movie from "./Movie"로 가져온다movies.map() function에 <Movie /> 를 반환하도록 한다.<Movie /> 안에 props를 전달하도록 코드를 작성한다.key props는 유일해야 하기 떄문에, API에서 넘겨주는 id를 사용한다.key={movie.id}nomad coder movie API를 통해 영화데이터 가져옴 -> 영화데이터 가져올 때 axios.get() function use -> axios.get() function은 시간이 필요하기 떄문에 async , await use -> state에 movie data가 update되면 isLoading... 을 보여주던 화면을 Movie Component를 출력하게 만들어준다.