const { totalResults } = res const total = parseInt(totalResults,10) const pageLength = Math.ceil(total/10)
if (pageLength > 1) { for (let page = 2; page <= pageLength; page++) { if (page > search.number / 10) break; const res = await axios .get( `http://www.omdbapi.com/?apikey=f6573a61&s=${search.title}&type=${search.type}&y=${search.year}&page=${page}` ) .then((res) => res.data); dispatch(addMovie(res)); } } };
데이터 가공
1 2 3 4 5 6
const { totalResults } = res // 데이터에서 totalResults만 구조분해로 꺼내온다 const total = parseInt(totalResults,10) // totalResults의 숫자는 number가 아닌 string 이기 때문에 숫자로 변환 해준다 const pageLength = Math.ceil(total/10) // total 나누기 10을 해주면 우리가 요청 할 수 있는 횟수가 된다. 이때 올림 처리를 해줘야 한다
추가요청 pageLength 즉 우리가 요청할수 있는 횟수가 1보다 크면 로직이 돌아가도록 if문을 설정 한다 최초의 요청으로 1페이지(10개의 목록)는 불러 왔으므로 2페이지부터 조회가 되도록 반복문을 만들어 준다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
if(pageLength > 1) { for(let page = 2; page <= pageLength; page++){ // 변수 명을 통상적으로 i로 작성하지만 여기선 page로 작성했다 if(page > search.number / 10) break; // search.number는 select에서 선택하는 영화 갯수 // 우리가 선택한 영화의 갯수보다 page가 많아질시 요청을 종료하는 if 문 const res = await axios.get( `http://www.omdbapi.com/?apikey=f6573a61&s=${search.title}&type=${search.type}&y=${search.year}&page=${page}` ) .then(res => res.data) // page 파라미터에 추가로 요청할 페이지 갯수를 넘긴다 dispatch(addMovie(res)) // 그리고 받아온 정보를 store에 저장한다 } }
searchSlice searchSlice의 reducers 부분 최초의 요청시에는 searchMovie action으로 영화의 정보들을 담아주고 추가 요청시에는 addMovie action으로 영화의 정보를 추가로 저장 해준다