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

home2 게시판 React 게시판 컴포넌트안에 컴포넌트넣기 질문

컴포넌트안에 컴포넌트넣기 질문

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

    치칫
    참가자
    리액트 라우터 부분에서
    
      <Route path="/" element={
          <>
          <div className="main-bg"></div>
       
          <div className='container mt-5'>
            <div className='row'>     
            {
              shoes.map((a,i)=>{      
              return(
                <List shoes={shoes[i]} imgCount={1+i} />
              )
              })
            }    
            </div>
          </div>
       </>
       }/>
    
    부분을 따로 컴포넌트로 빼서 만들고싶은데
    이게 이미 List 라는 컴포넌트가 있어서 그런지 이것저것 해봤는대 오류만 나더라구요..
    감이 안잡혀서 컴포넌트 중첩 or 컴포넌트 안에 컴포넌트 넣기 이런식으로 검색해서 글들 봐도 
    잘 이해가안되서 힌트좀 주실수있을까요?.. ㅠㅠ
    
    
     function List(props){
      return(
        <div className='col-md-4'>
                < img src={'https://codingapple1.github.io/shop/shoes' +props.imgCount + '.jpg'} width="80%"/>
                <h4>{props.shoes.title}</h4>
                <p>{props.shoes.price}</p>
              </div>
      )
     }
    list 컴포넌트는 이렇습니다
    #84368

    codingapple
    키 마스터
    컴포넌트안에 컴포넌트넣으려면 
    컴포넌트를 import해와서 넣기만 하면 끝입니다
    #84374

    치칫
    참가자
    //detail.js 의 상단부에 적은것
    import List from './../App';
    
    
    // app.js 있는 list 컴포넌트
    function List(props){
      return(
        <div className='col-md-4'>
                < img src={'https://codingapple1.github.io/shop/shoes' +props.imgCount + '.jpg'} width="80%"/>
                <h4>{props.shoes.title}</h4>
                <p>{props.shoes.price}</p>
              </div>
      )
     }
    
    
    // detail.js 에 있는 main 컴포넌트
    
    
    function Main(props){
      return(
      <>
      <div className="main-bg"></div>
      <div className='container mt-5'>
        <div className='row'>     
        {
          props.shoes.map((a,i)=>{      
            <List shoes={props.shoes[i]} imgCount={1+i} />
          })
        }    
        </div>
      </div>
    </>
      )
    }
    
    
    
    // app.js 에 있는 main 컴포넌트 불러오는것
        <Main shoes={shoes}/>
    이렇게 작성하니깐 map 반복문이 안돌아가네요
    list만도 아예 출력이 안되는것같아요 
    import할때 app.js 에서 export를 안해서 그런가해서
    
    export default App; 을 export {App,List}; 로 export 할려고하면 오류가 무조건 나는것 같더라구요
    그래서 js파일을 하나 더 만들어서 거기다가 list 컴포넌트를 만들고 그걸 detail.js에 임폴트하면 되나라고 생각해서
    해보려고 생각하니깐 새로운곳에 만들고 app.js에 <List shoes={shoes}/>라는 식을 넣을수가 없는것같아서 성립이 안되는것같아서
    다른건 정상적으로 출력되는데 map부분에서만 생성이 안되고있는것같은데 이유를 모르겠네요 ㅠ
    return()을 맵안에 넣을때 아예 멈춰버리고 리턴을뺴면 다른건 잘 동작하는데 map이 동작이안하네요
    
    
    #84381

    치칫
    참가자
    컴포넌트에 컴포넌트 넣기는 list에 변수가 있어서 그런지 도저히 하는법을 모르겠어서
     <List shoes={shoes} imgCount={1}/>
    function List(props){
      return(
    <>
    <div className="main-bg"></div>
    <div className='container mt-5'>
      <div className='row'>
      { props.shoes.map((a,i)=>{
        return(
          <div className='col-md-4'>
          < img src={'https://codingapple1.github.io/shop/shoes' +parseInt(props.imgCount+i) + '.jpg'} width="80%"/>
          <h4>{props.shoes[i].title}</h4>
          <p>{props.shoes[i].price}</p>
        </div>
        )
       })
      }
      </div>
    </div>
    </>
      )
     }
    그냥 리스트하나에 다담는식으로 해서 하긴했는대 근본적으로
    이미 있는 리스트 컴포넌트를 새로만든 컴포넌트 안에넣어서 하고싶었는대 list에는 이미 props한 스테이트가있었고
    그걸 또 shoes를 props한 컴포넌트에 넣을수있는건가요?
    위에 글에 대충 어케했는지는 나와있는데 이게 결국은 다 하나로 만드는게 맞는건지
    변수가 없는 컴포넌트에 변수없는 컴포넌트 넣기 실험은 잘 성공했습니당... 죄송합니다 이상한 질문만해서...
    ++그리고 리액트가 제가 코드를 잘못 오류로 칠때마다 그냥 멈춰버리고 X버튼으로도 안꺼져서 강제종료해서 모든 인터넷창을 다끄고 서버에서
     다시 npm start를 쳐서 계속 다시 켜야하는 번거로운 상황이 계속나오는데 이게 정상인가요? 너무 번거롭네요 계속 오류날때마다 이걸 반복하면서 계속 고쳐야하니까...
    
    
    		
    	
    #84400

    codingapple
    키 마스터
    컴포넌트마다 파일하나에 담읍시다 
    안되는건 에러메세지 잘살펴보면 됩니다 자식컴포넌트에서 부모에 있던거 쓰려면 props로 보내줍시다 
    무한재렌더링같은 에러가 아니면 보통 멈추진 않습니다
    #84436

    치칫
    참가자
    선생님 죄송한대 하나만 더 여쭤볼게요!
    app.js 에 있는 컴포넌트를 새로 다른폴더에 만든 컴포넌트 안에 임폴트 할수있나요?
    
    app.js 에서 export default App; 이걸 수정이 불가능한것같은데
    예를들어 function Footer(){} 라는 컴포넌트를 app.js에 만들었으면
    
    export {App,Footer}; 이런식으로는 뺼수가없는것같은데 방법이있는건지 아니면 app.js에 있는건 못하는건지 궁금합니다
    #84437

    codingapple
    키 마스터
    export function Footer(){} 추가만 하면 될거같은데 굳이 안그러는게 좋아보입니다
     
7 글 보임 - 1 에서 7 까지 (총 7 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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