210709 React Router(2)

9311 ワード

別のファイルで詳細ページをコンパイルするには、次の手順に従います。


詳細コンポーネントを取得するために、srcフォルダの下にdetail.jsを作成します.
/* detail.js */
import React, {useState} from 'react';

function Detail(){
  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">상품명</h4>
        <p>상품설명</p>
        <p>120000원</p>
        <button className="btn btn-danger">주문하기</button>
      </div>
    </div>
  </div>
  )
}

export default Detail;     // detail을 export 하겠다는 의미!
index.jsからimportまで、そして同じように使えばいい!
import Detail from './detail.js';

..

      <Route path="/detail">
            <Detail/>
      </Route>

ボタン(Link,History)に移動


  • navbarのホームページをクリックし、詳細をクリックして詳細ページに入ります.(navのコードを少し変更するだけ)
  •               <Nav.Link> <Link to="/">Home</Link></Nav.Link>
                  <Nav.Link> <Link to="/detail">Detail</Link></Nav.Link>
  • リンクではなくボタンを押して移動したい場合は
    「≪詳細ページに戻る|Back to Details Page|emdw≫」ボタンの作成useHistoryというフックを使用します.(インポート後に使用)
    importコード:import { useHistory } from 'react-router-dom';変数宣言コード:let history = useHistory();アクセス履歴等のobjectの保存
  • <button className="btn btn-danger" onClick={()=>{history.goBack()}}>뒤로가기</button>
    ボタンを押してgoBack()関数を書けばいいのです
    特定のパスに移動するには
    <button className="btn btn-danger" onClick={()=>{history.push('경로')}}>뒤로가기</button>

    switch


    urlの重複マッチングは許可されません.一番上の1つを見たい時に使います
    スイッチラベルですべてのルーターを包んでください.
    以前に使用したexact path="/">は不要です.
    <Switch>
    	<Route></Route>
        ...
    </Switch>