-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
json 에 있는 데이터들을 map 으로 출력 할 떄 만약 상품마다 데이터가 null 값이라면 어떻게 출력..
21.10.28 16:01 작성 조회수 215
0
답변을 작성해보세요.
0
조현영
지식공유자2021.10.28
저 부분이 문제가 아니라 신발 상세 페이지가 문제일 겁니다. 아래 같은 식으로 하면 됩니다.
{displayText ? <p>{displayText}</p> : <p>신발 품절입니다.</p>}
김수민
질문자2021.10.28
조현영
지식공유자2021.10.29
저 에러메시지는 ProductDetail.Nike가 undefined라는 겁니다. ProductDetail.Nike?.[0] 하세요.
주소창에 localhost:3000/product/1 할 때는 들어가지나요?
김수민
질문자2021.10.29
http://localhost:3000/product/8 입력해서 들어가면
바로 App.js 에서 Redirect 한 페이지 main -> localhost:3000/main 페이지로 넘어 가 집니다.
라우터는 지금 이런 식으로 되어 있습니다.
아 localhost:3000/product/8 에서 페이지 새로고침을 하면 바로 main 으로 자동으로 넘어 가 집니다.
김수민
질문자2021.10.29
redirect 는 없네요 ㅠㅠ 라우터부분 문제인 거 같은데 좀 더 찾아 보겟습니다.
간단히 쉽게 저거는 예시로 만든 건데.
제가 보니까 displayText 가 없는 데이터들은 Nike 안에 id 값이 없더라고요.
즉 나이키에 있는 상품들은 Array 가 있고 그 안에 id 값이 있는 것이고.
제가 월래 만들려고 했던 것은 신발 사이즈 부분인데.
신발 사이즈
Nick json 에서는 -> Info ( Array ) -> 0,1,2,3,4,5,6 이런 식으로 있습니다.
근데 제가 node에서 만들어놓은 json 에서는 퓨마 -> Info 에 들어가면 -> Array(0,1,2,3,4,5) 가 없으니까.
그 Array 값들 없으니까 오류가 나는 것이고, 오류대신 해당 삼품은 없습니다 이렇게 출력하고 싶었습니다.
ProductDetail.brand.퓨마.Info.map(Detail => (
<li key={Detail.id}>{Detail.DisplayText ? <p>{Detail.displayText}</p> : <p>해당 상품이 없습니다.</p>}</li>
조현영
지식공유자2021.10.29
상품이 존재하는 경우와, 존재하지 않는 경우의 객체 모양의 차이점을 파악하신 후, 그 차이점을 바탕으로 다르게 보여주시면 됩니다.
<li key={Detail.id}>{Detail.DisplayText ? <p>{Detail.displayText}</p> : <p>해당 상품이 없습니다.</p>}</li>
이것도 문제가 될 것 같지는 않아보이는데요. DisplayText가 두 객체의 차이점이라면요.
근데 존재하지 않는데 객체가 있는 것이 맞나요?
[{존재}, {존재안함}, {존재}] 이런 건지
[{존재}, {존재}] 이런 건지
아예 없는건지 구부노디어야 합니다.
김수민
질문자2021.10.31
[{존재}, {존재}] 이런 식으로 있지만.
존재 하지 않는다면 -> [ ] 빈 배열로 있습니다. 감사합니다. ㅎㅎ
아 그리고 제로초님 제가 신발 쇼핑몰 메인 페이지랑, 상세 페이지를 만들려고 하는데.
메인 페이지에서 상세 페이지로 이동하는 동적 Link를 안 만들고
상세 페이지로 이동하려면 직접 도메인을 입력 하도록
도메인 www.minshoes.com/1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 이런 식으로 만들어 1/2/3/4 이런 식으로 도메인 직접 입력 해서 페이지 이동하는 형식으로 만들어 줄 려고 하는데,
기존에는 메인 페이지에서 신발 id 값 클릭해서 상세 페이지로 이동하는 방식으로 만들었는데,
그런 식으로 만들면 이 신발 목록 api post 요청을 어디서 해야 할 지 모르겠습니다.
조현영
지식공유자2021.10.31
ProductDetail.brand.퓨마.Info?.length ? ProductDetail.brand.퓨마.Info.map(() => {
...
}) :<p>상품이 없습니다</p>
이런식으로 하면 됩니다.
api 요청은 신발 상세 페이지 useEffect에서 로딩하시면 됩니다. 다만 로딩 전 화면도 만드셔야겠죠
답변 1