React Routerのチュートリアル Lesson10
前回の続き。
Lesson10 - Clean URLs with Browser History
これまで作ったアプリのURLは、ハッシュを使ったHackで成り立っています。これは常にうまく動作するデフォルトの挙動です。 しかし、もっと良い方法があります。
モダンなブラウザは、HTTPリクエストを生成することなくURLを操作することが可能です。
browserHistory
を使う
app/index.jsx
を開いて、以下のように変更しましょう。
hashHistory
をbrowserHistory
に変更しただけです。
ReactDOM.render(( <Router history={browserHistory}>
これだけでクリーンなURLでアクセスすることができます。 しかしこの方法には罠があります。 何らかのリンクをクリックしたのち、ブラウザをリフレッシュしてみましょう。 すると404 Not Foundが発生するはずです。
404 Not Foundの解決方法
webpack-dev-server
の起動オプションに、--history-api-fallback
をつける。
package.json
を開いて、以下のように変更します。
"scripts": { "start": "webpack-dev-server --inline --content-base . --history-api-fallback", },
scriptタグのsrcに指定しているbundle.js
のパスを変更する。
html-webpack-plugin
を使っているので、webpack.config.js
を変更します。
以下のように、filename
を変更します。
output: { path: PATHS.build, filename: '/bundle.js' },
まとめ
browserHistory
を使えば、クリーンなURLを使うことができる。