/api/performances/new
를 통해 데이터에 fetch가 안되는 문제Runtime Error
로 데이터에 access가 안되는 문제 /api/performances/new
를 통해 데이터에 access가 안되는 문제api/performances/new
경로에서 data 가져오는 loadNew
함수getStaticProps
함수를 이용해서 loadNew 함수를 호출한 후 , 데이터를 props에 담는다.newProduct
함수 한테 그 데이터를 내려준다.아니다. 접속했을 때, data가 잘 들어오는 걸 볼 수 있다.
파일에 따라 api 폴더 밑 파일에 접근하는 주소가 달라서 그런거 아닐까 생각이 들었다.
그러니 주소를 full로 다 써보자.
http://~ 로 시작해서 api 의 서버 주소에 접근했다.
그리고 데이터가 잘 들어오는지 확인하기 위해 console.log를 작성해줬다.
그랬더니, 이런식으로 data가 잘 들어오는걸 확인할 수 있었다.
이 문제는 보통 받아온 data가 배열
형식이 아닐 때 error가 생긴다.
왜냐하면 map 함수가 배열 데이터에서만 사용할 수 있기 때문이다.
NewProcucts 함수에서 data를 받아왔고,
그 데이터를 map을 통해 접근하고 있다.
data가 어떻게 받아와지는지 확인하자.
useEffect를 통해 console로 data가 어떻게 받아와지는지 확인해보자.
그렇다 data는 객체이고, 그 안의 배열인 newData에 접근해야 한다.
그렇다면, 다시 코드를 전체적으로 수정해보자. (바로 아래에 작성함 !)
데이터 fetch 하는 loadNew
함수
주소 경로를 잘 설정해준 것을 확인할 수 있다.
getStaticProps 함수안에서 loadNew를 통해 데이터를 불러온다.
참고로 Home 컴포넌트 => NewProducts 컴포넌트 로 데이터를 전달할 것.
03.Home 컴포넌트가 위 데이터를 매개변수로 가져온 코드
이름을 data => props로 변경해줬다.
props.newData
이런식으로 데이터에 접근할 예정Performance
와 같은 타입일 예정이고, 그 타입을 배열의 형태로 가지고 있는 NewData_TYPE
으로 또 타입스크립트를 지정해줬다. => 즉, 요것이 props임하위 컴포넌트인 NewProducts에 props를 내려준다.
NewProducts 함수에서 props를 받아온 모습
props.newData
로 데이터에 접근하는 모습
이 데이터는 SSR 방식
에서 => SSG 방식
으로 데이터를 불러오는 방식을 변경했다.
현재 메인 페이지에 있는 NewProducts 컴포넌트 말고,
MatinProducst 컴포넌트도 SSG 방식을 활용하고 싶어서, 코드를 같이 수정해줬다.