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

home2 게시판 React 게시판 안녕하세요 리액트 질문 드립니다.

안녕하세요 리액트 질문 드립니다.

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

    윤종일
    참가자
    예를들어 data.js는
    let data1 = [
        {id:0,name:"now사료",price:24000},
        {id:1,name:"오리젠 사료",price:24000},
        {id:2,name:"지위픽 사료",price:24000}
    ]
    let data2 = [
        {id:0,name:"간식1",price:24000},
        {id:1,name:"간식2",price:24000},
        {id:2,name:"간식3",price:24000},
        {id:3,name:"간식4",price:24000}      
    ]
    이렇게 생긴 데이터 입니다.
     
     
    import { data1, data2 } from "./data.js";
    이렇게 data.js를 임폴트했을때 맵을써서 스테이트를 변경할수는 없나요?
    예를들면
    let [dogFood, setDogFood] = useState(data1);
    이걸 setDogFood를 이용해서 data2로 변경하고싶은데
    data3,data4,data5이런식으로 계속 제가 data 변수를 추가해서 늘어난다고 가정했을때
                {itemBox.map((a, i) => {
                  return (
                    <Route
                      path={"/food" + (i + 1)}
                      element={
                        <Card i={i} setDogFood={setDogFood} dogFood={dogFood} />
                      }
                    />
                  );
                })}
    이렇게 card라는 컴포넌트안에
    import { data1, data2,data3,data4,data5 } from "./data.js";
    다시 데이터를 임폴트 시키고
    
    function Card(){
    let copy = [...dogFood];
    -----------------------------------
    바깥의  {itemBox.map((a, i) 여기서 i를 props로 받아와서
    copy = data+{props.i+1};
    -----------------------------------
    setDogFood(copy);
    }
    이런식으로 data1 data2 이렇게 data는 내버려두고 숫자만 바꿀수는 없나요?
    #91077

    윤종일
    참가자
    구글링을 해서 data.js를 오브젝트형식으로 수정한후에
    import { useEffect } from "react";
    import data from "./data.js";
    function Card(props) {
      useEffect(() => {
        const copy = [...data[`data${props.i}`]];
        props.setDogFood(copy);
      }, [props.i, props.setDogFood]);
      return (
        <>
          {props.dogFood.map(function (item, j) {
            return (
              <div key={j} className="card-box">
                <div className="f-img">
                  < img src={`img/${props.i}dog${j + 1}.png`} alt="dogfood" />
                  <h4>{item.name}</h4>
                  <p>{item.price}원</p>
                </div>
              </div>
            );
          })}
        </>
      );
    }
    export default Card;
    코드를 이렇게 수정해서 되긴되는데..
    
    오브젝트형식 말고 export {data1,data2};
    이런식으로 익스포트해서 let copy = `data${props.i}` 로하나
    아님 오브젝트형식으로 저렇게 하는것보다 뭔가 더 좋은 방법이 있나요??
    
     
     
    #91089

    codingapple
    키 마스터
    다이나믹하게 변수명 쓰고싶으면 
    object자료에 담아서 object자료['data' + i] 하는 수 밖에 없을걸요
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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