(App.js)
<Route path="/detail" element={ <Detail shoes={shoes}/> }/>
<Detail>
을 쓰는 곳에서 props 를 전송한다.(Detail.js)
<div className="container>
<div className="row">
<div className="col-md-6">
<img src="https://codingapple1.github.io/shop/shoes1.jpg" width="100%" />
</div>
<div className="col-md-6 mt-4">
<h4 className="pt-5">{props.shoes[0].title}</h4>
<p>{props.shoes[0].content}</p>
<p>{props.shoes[0].price}원</p>
<button className="btn btn-danger">주문하기</button>
</div>
</div>
</div>
<Route>
를 쓰면 페이지 하나를 만들 수 있다고 했으니 3개를 쓰면 된다.(?)<Route path="/detail/0" element={ <Detail shoes={shoes}/> }/>
<Route path="/detail/1" element={ <Detail shoes={shoes}/> }/>
<Route path="/detail/2" element={ <Detail shoes={shoes}/> }/>
<Route>
를 100개 만들어야 하므로 다른 방법을 사용해야 한다.<Route path="/detail/:id" element={ <Detail shoes={shoes}/> }/>
<Detail>
컴포넌트를 보여달라는 뜻이다.<Detail>
컴포넌트를 보여준다.(Detail.js)
<h4 className="pt-5">{props.shoes[현재url에입력된숫자].title}</h4>
<p>{props.shoes[0].content}</p>
<p>{props.shoes[0].price}원</p>
<button className="btn btn-danger">주문하기</button>
import { useParams } from 'react-router-dom'
function Detail(){
let {id} = useParams();
console.log(id)
return (
<div className="container>
<div className="row">
<div className="col-md-6">
<img src="https://codingapple1.github.io/shop/shoes1.jpg" width="100%" />
</div>
<div className="col-md-6 mt-4">
<h4 className="pt-5">{props.shoes[id].title}</h4>
<p>{props.shoes[id].content}</p>
<p>{props.shoes[id].price}원</p>
<button className="btn btn-danger">주문하기</button>
</div>
</div>
</div>
)
}
<img src={"https://codingapple1.github.io/shop/shoes" + props.i + ".jpg"} />
🚨 주어진 시간은 1시간
let result = props.shoes.find((result) => props.shoes.id === "0");
console.log(result);
let result = props.shoes.find((result) => result.id === 0);
console.log(result);
💡 Arrow Function (화살표 함수)에 대해 먼저 이해하고 넘어가야한다.
ex) function(){ return ~~ } 👉 () => { return ~~ };
"function 이 화살표로 변한다." 라고 생각하면 된다.
따라서 처음에 입력한 코드를 보면 result 라는 파라미터를 사용했으므로 return 안에서 props.shoes. 가 아닌 result.id 로 했을 때 작동이 잘 되는 것이다.
💡find() 에 대해 알아보자.
1. 내가 원하는 key의 값을 뽑아내는 함수를 작성한다.
2. 값이 들어있는 배열.find( object의 key의 값을 뽑아내는 함수 ) 를 해준다.
📗출처 : https://www.youtube.com/watch?v=N1QcR8F3xFY
props.shoes.find((result) => result.id === 0);
- 즉 이 코드는 아래와 같은 코드이다.
function Findid(result) { return result.id === 0; } props.shoes.find(Findid);
function Detail(props) {
let { id } = useParams();
console.log(id);
let result = props.shoes.find((result) => result.id === id);
}
function Detail(props) {
let { id } = useParams();
let result = props.shoes.find((result) => result.id == id);
return (
<>
<div className="container">
<div className="row">
<div className="col-md-6">
<img
src="https://codingapple1.github.io/shop/shoes1.jpg"
width="100%"
/>
</div>
<div className="col-md-6">
<h4 className="pt-5">{result.title}</h4>
<p>{result.content}</p>
<p>{result.price}원</p>
<button className="btn btn-danger">주문하기</button>
</div>
</div>
</div>
</>
);
}
✍ 비교연산자만의 문제이고 다른 해설 부분은 내가 혼자 찾아가면서 적은 부분들이라 꽤 보람이 있었다😁😁