3 글 보임 - 1 에서 3 까지 (총 3 중에서)
-
글쓴이글
-
2023년 7월 15일 15:29 #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는 내버려두고 숫자만 바꿀수는 없나요?
2023년 7월 15일 19:02 #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}` 로하나 아님 오브젝트형식으로 저렇게 하는것보다 뭔가 더 좋은 방법이 있나요??
2023년 7월 15일 20:28 #91089
codingapple키 마스터다이나믹하게 변수명 쓰고싶으면 object자료에 담아서 object자료['data' + i] 하는 수 밖에 없을걸요
-
글쓴이글
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
- 답변은 로그인 후 가능합니다.