• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 상세페이지 100개 만들기 에서 detail/3 이상에서의 오류

상세페이지 100개 만들기 에서 detail/3 이상에서의 오류

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 글쓴이
  • #28609

    뿌뿌
    참가자

    detail.js

    function Detail(props) {
     
      let {id} = useParams();
      // useParams 반환값은 객체 그 안에 url의 모든 파라미터 담겨있음
    // 그래서 destructuring 을 사용해 변수에 담아줌

    return(
    <div className="container">
          <div className="row">
            <div className="col-md-6">
             
             
            </div>
            <div className="col-md-6 mt-4">
              <h4 className="pt-5">{props.shoes[id].title}</h4>
              <p>상품설명</p>
              <p>120000원</p>
             
            </div>
          </div>
    </div>
    );
    }
    export default Detail;

    여기서 어떤걸 추가를 해야할까요? 감이 안잡히네요

     

    #28630

    codingapple
    키 마스터

    안에 상품설명을 조건부로 보여주면 되겠군요 if문이나 삼항연산자 써서 

    id가 3 이상이거나 없는 숫자면 상품이없습니다 글자를 출력하면 될듯요 

    #28633

    뿌뿌
    참가자

    제가 이해를 잘 못해서 다시한번 여쭤볼게요!

    저 코드문에서 3이상의 detail페이지가 뜨지 않는 현상이어서

    나타내고 싶은데 삼항연산자를 쓰면 되는건가요?

    #28656

    뿌뿌
    참가자

    메인

    /*eslint-disable */
    import React,{useState} from 'react';

    import { Link } from 'react-router-dom';

    import data from './data.js' ;
    import './ReviewMain.css' ;
    import axios from 'axios';

    function ReviewMain(){

      let [shoes,shoes1] = useState(data);

      return(
       
      <div className='main'>
    <div className='headline'>
      <h3>기관검색</h3>
      <hr/>
      </div>
     
       <div className='container'>
        <div className='row'>
          {
            shoes.map((a,i)=>{
              return <Card shoes={shoes[i]}  i ={i} key={i}/>
            })
          }    
        </div>
         </div>
         <button className='btn btn-primary' onClick={()=>{
          //axios.post('서버url',{id:'멀티캠퍼스',pw:'1234'}).then()

           axios.get('https://raw.githubusercontent.com/9598dohyun/image/main/data2.json')
         .then((result)=>{  //.then 은 ajax가 성공했을때 나오는 코드
         
          shoes1([...shoes,...result.data]);//[...shoes] 슈즈를 벗기고 다시 [] 로 감싸는 복사본
          console.log(result.data);
        })
         .catch(()=>{
        console.log('실패')
         })
         }}>더보기</button>
      </div>
      )
    }
    function Card(props){
     
      return(
       
          <div className="col-md-4" >
           
         <button><Link to={"/detail/"+(props.i)}> 이미지
         
             </img> </Link></button>
            <h4>{props.shoes.title}</h4>
           
            </div>  
           
      )
    }

    export default ReviewMain;

     

    Detail.js

    import React,{useState,useEffect} from 'react';
    import {useParams} from 'react-router-dom';

    function Detail(props,) {
     
      let {id} = useParams();
      // useParams 반환값은 객체 그 안에 url의 모든 파라미터 담겨있음
    // 그래서 destructuring 을 사용해 변수에 담아줌

    return(
     
    <div className="container">
        {[id]<6
          ?<div className="row">
            <div className="col-md-6">
               
            </div>
            <div className="col-md-6 mt-4">
              <h4 className="pt-5">{props.shoes[id].title}</h4>
              <p>상품설명</p>
              <p>120000원</p>
            </div>
          </div>
          :null}
          {/* 더보기 이후 */}
          {[id]>5
          ?<div className="row">
           <div className="col-md-6">
             
            </div>
            <div className="col-md-6 mt-4">
              <h4 className="pt-5"></h4>
              <p>상품설명</p>
              <p>120000원</p>
            </div>
          </div>
          :null
          }

    </div>
    );
    }

    export default Detail;

    일단은 해결을 했습니다 그런데 detail.js에서 id>6에서 title 부분을 어떻게 가져와야하는지 또 막혔습니다.. ReviewMain에서 result.data를  cosole.log 해본 결과 배열은 확인됐습니다.

    근데 거기서 title만  어떻게 가져오는지 잘 몰라서 계속 고민입니다.

    #28664

    codingapple
    키 마스터

    두 문제 전부 3번상품이 변수나 state에 없어서 그렇습니다 

    /detail/3 접속시 상품을 가져오라고 ajax 코드를 짜거나 그러면 됩니다 

     

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠