始めに
本筆者はズブズブの素人であリます。学習用の記録であります。
まずはインストール
npm install react-router-dom
インストール後はreact-dom-domをimportする。
BrowserRouter, Switch,Route,Link使用できる様にする。
//index.js
mport {
  BrowserRouter,
  Switch,
  Route,
  Link
} from "react-router-dom";
BrowserRouter
BrowserRouterのタグ内部でrouter機能が使用できる様になる。
BrowserRouterは1プロジェクトにつき1回しか使えません。
react-router関連のコンポーネントが全て入るように、かなり上の階層で使うことになる。
//index.js
ReactDOM.render(
  <React.StrictMode>
    <BrowserRouter>
      <>
         {/* ここにreact-router関連のコンポーネントを全て書く */}
      </>
    </BrowserRouter>
  </React.StrictMode>,
  rootElement
);
Route
- ルーティング先のURLと、そのURLで表示したいコンポーネントを指定します。
- pathで遷移先のURLしする。
- componentで表示したいコンポーネントを指定します
- exactでURL完全しないと画面遷移されない様にする。react-routerは実はURLが前方一致したコンポーネントを全て表示します。それを予防します。
import App from "./App";
ReactDOM.render(
  <React.StrictMode>
    <BrowserRouter>
      <>
         <Route path="/" component={APP}/>
      </>
    </BrowserRouter>
  </React.StrictMode>,
  rootElement
);
Link
- LinkはHTMLのaタグと同じような役割。
- toでリンク先を指定することでそこへ遷移できる。
- レンダリングされるとaタグに変換する。の中にaタグは含めることができない。
fileの分割
上記の内容でroutingの設定を進めると冗長となり、可読性が悪くなる。その為、routing用のファイルを作成し、分割していく。
src/router/Public.js
import React from "react";
import { Route, Switch } from "react-router-dom";
import Auth from "../components/auth_componets/Auth";
import Main from "../components/layouts/Main";
const Public: React.FC = () => {
  return (
    <>
      <Switch>
        <Route exact path="/login" component={Auth} />
        <Route exact path="/" component={Main} />
      </Switch>
    </>
  );
};
export default Public;
分割したファイルをimportしてやる
import Public './router/Public';
const App: React.FC = () => {
  return (
    <BrowserRouter>
      <>
        <Header />
        <Container fixed>
          <Public />
        </Container>
        <Footer />
      </>
    </BrowserRouter>
  );
};
終わりに
react routerを学習していきました。routerのバリエーションや実践的な内容が増えればアップしていきます。