210709 React Router(3)
15801 ワード
データをDetail構成部品にバインドする
<Detail shoes={shoes}/>
function Detail(props){
let history = useHistory();
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[0].title}</h4>
<p>상품설명</p>
<p>120000원</p>
<button className="btn btn-danger">주문하기</button>
<button className="btn btn-danger" onClick={()=>{history.goBack()}}>뒤로가기</button>
</div>
</div>
</div>
)
}
App.jsで靴データを作成しないdetail.jsで靴のデータを作ればいいと思います.
ただし、できるだけ最上位コンポーネントにデータを格納することをお勧めします.
URLパラメータを使用した複数ページの作成
要求事項:/detail/n登録の場合は、n番目の商品を提示してください!(nは数字)
<Route path="/detail/:id">
:id
:urlのパラメータパラメータなので、コロンの後ろに自由に名前を付けることができ、複数使用できます.
簡単に言えば、
:id
ビットに任意の文字を入力すると、Detail要素が表示されます.URL接続ごとに異なる商品を展示したい場合は
useParams()
hookを使用しますuseParams()
:現在のURLのパラメータ{パラメータ1,パラメータ2}を格納する関数function Detail(props){
let history = useHistory();
let { id } = useParams(); //이렇게 받아옴
return(
<div className="container">
<div className="row">
<div className="col-md-6">
<img src={'https://codingapple1.github.io/shop/shoes' + (Number(id)+1) + '.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>
<button className="btn btn-danger" onClick={()=>{history.goBack()}}>뒤로가기</button>
</div>
</div>
</div>
)
}
++写真も違うところに置こうと修正しました私はid+1と言っていましたが、ずっとエラーで、idが文字で受信されているせいか整数演算ができないのでnumber()で整数に変えたと思います.Hookが何であるかを知る
しかし問題は、靴のデータの順序が変わると、詳細ページもおかしくなります
->使用商品の永久番号(指定されたid)
実際の開発では,id:0の商品データをajaxとしてサーバに要求するだけである.
import React from 'react';
import { useHistory, useParams } from 'react-router-dom';
function Detail(props){
let { id } = useParams();
let 찾은상품 = props.shoes.find(function(상품){
return 상품.id == 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 mt-4">
<h4 className="pt-5">{찾은상품.title}</h4>
<p>{찾은상품.content}</p>
<p>{찾은상품.price}원</p>
<button className="btn btn-danger">주문하기</button>
</div>
</div>
</div>
)
};
export default Detail
Reference
この問題について(210709 React Router(3)), 我々は、より多くの情報をここで見つけました https://velog.io/@autumndr3ams/210709-React-Router3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol