React RouterでBasenameを指定する
はじめに
React Routerでルート以外の時に作成したアプリを置きたい時とかの話
1ReactDOM.render(
2 <Router history={browserHistory}>
3 <Route path="/" component={App} />
4 <Route path="/pageA" component={pageA} />
5 <Route path="/pageB" component={pageB} />
6 <Route path="/pageC" component={pageC} />
7 </Router>,
8 document.getElementById("app")
9);
みたいなルーティングをした状態でルート以外に作成したアプリを配置をしたい時の話
このままだとデプロイ先のルートにしか置けないので困る
かといってフルパスでルーティングを書くわけにもいかない
対処法
historyライブラリを使うことで解決出来る
/hogeに配置するコードはこんな感じ
1import { createHistory, useBasename } from "history";
2
3let history = useBasename(createHistory)({
4 basename: "/hoge/"
5})
6
7ReactDOM.render(
8 <Router history={history}>
9 <Route path="/" component={App} />
10 <Route path="/pageA" component={pageA} />
11 <Route path="/pageB" component={pageB} />
12 <Route path="/pageC" component={pageC} />
13 </Router>,
14 document.getElementById("app")
15);
これで/hoge/pageAの用なルーティングを実現することが出来る