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

home2 게시판 React 게시판 map 말고 for 반복문 사용안되는 문제

map 말고 for 반복문 사용안되는 문제

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

    박세진
    참가자

    '(UI 제작 패턴) props를 응용한 상세페이지 만들기' 강의에서 질문있습니다.

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

    function App() {
     
      let [currentTitle, changingTitle] = useState(['남자 코트 추천', '남녀 코디 모음', '올해의 코디'])
      let [like, changingLike] = useState(0)
      let [modal, changingModal] = useState(false)
      let [posts, changingPosts] = useState(0)
      function changingTitleFunction(){
        var sexArray = [...currentTitle]  //deep copy
        sexArray[0] = '여자 코트 추천'
        changingTitle(sexArray)
      }

      function changingOrderFunction(){
        var orderArray = [...currentTitle]
        orderArray.sort()
        changingTitle(orderArray)
      }

      function changingLikeFunction() {
        changingLike(like+1)
      }

      function modalFunction() {
        changingModal(!modal)
      }

      function addressModalFunction() {
        changingAddressModal(!addressModal)
      }

      function Post() {
        var postArray = []

        for (var i = 0; i<3; i++){
          postArray.push(
            <div className="list">
              <h3 onClick={ () => changingPosts(i)}>{currentTitle[i]} </h3>
              <span onClick={ changingLikeFunction }>👍</span> {like}
              <p>?월 ?일 발행</p>
              <hr />
            </div>
          )
        }

        return postArray
      }

      return (
        <div className="App">
          <div className="black-nav">
            <div>개발 Blog</div>
          </div>

          <button onClick={ changingTitleFunction }>남/녀</button>
          <button onClick={ changingOrderFunction }>정렬</button>

          {Post()}
          <button onClick={() => { changingPosts(0) }}>버튼1</button>
          <button onClick={() => { changingPosts(1) }}>버튼2</button>
          <button onClick={() => { changingPosts(2) }}>버튼3</button>

          <button onClick={modalFunction}>포스트</button>
          {/* 자식component에 props전달 ) <자식component 작명={state명}/>*/}
          {modal === true ? <Modal currentTitle={currentTitle} posts={posts}/> : null}
        </div>   
      );
    }

    function Modal(props){
      return(
          <div className='modal'>
            <h2>{props.currentTitle[props.posts]}</h2>  
            <p>날짜</p>
            <p>상세내용</p>
          </div>
      )
    }

    export default App;

     

    위 코드는 강사님 코드보고 학습하면서 만든것인데요,

     

    위 코드에서 map반복문 부분인

     {
              currentTitle.map( function(titleData, i){
                return(
                <div className="list">
                  <h3 onClick={() => { changingPosts(i) }}>{titleData} </h3>
                  <span onClick={ changingLikeFunction }>👍</span> {like}
                  <p>?월 ?일 발행</p>
                  <hr />
                </div>)
            })
    }

    이 부분을 for 반복문을 이용해서

     

    function Post() {
        var postArray = []

        for (var i = 0; i<3; i++){
          postArray.push(
            <div className="list">
              <h3 onClick={ () => changingPosts(i)}>{currentTitle[i]} </h3>
              <span onClick={ changingLikeFunction }>👍</span> {like}
              <p>?월 ?일 발행</p>
              <hr />
            </div>
          )
        }

        return postArray
      }

    저는 이렇게 만들어서 했는데요, 제목에 써둔 강의 이전에는 정상작동되다가 h3태그 누르면 modal의 제목부분이 바뀌는부분에서 안됩니다...

    onClick={ () => changingPosts(i)} 이부분이 문제인것같은데 막상 보면 뭐가 틀렸길레 안되는지 모르겠네요...

     

    강사님이 설명한 map부분을 for문으로 고쳐서 쓰려고 한다면 어떻게 써야할까요?

    #23520

    codingapple
    키 마스터

    반복문의 var을 let으로 바꿔봅시다 

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

About

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

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

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