私はhashHistory
からreact-router
を使って反応単一ページアプリケーションを構築していましたが、次のようなURLの末尾のコードを削除するまではうまくいきました。#/?_k=ncbx6v
React Single Pageアプリをブラウザで利用できますか?
私が遭遇したのは、browserHistoryに移行することでしたが、すべての例と解決策にとhistory-api-fallback
をtrueに設定する必要があることに気付きました。私はこのアプローチを試してみましたが、それはうまくいった(localhost
)が、スタンドアロンのbundle.jsファイル+ index.htmlは動作しなくなりました。
私はWebPACKのを実行して、HTMLファイルを開くと、私はコンソールにこのエラーが表示されます。 Warning: [react-router] Location "/Users/mike/project/index.html" did not match any routes
私は問題の背後にある仕組みに慣れていないけど、解決策がそこにあります場合、私は好奇心が強いです私は慣れていない。
これは私のWebPACKファイルです:
const {resolve} = require('path')
module.exports =() => {
return {
context: resolve('src'),
entry: './app',
output: {
path: resolve('public'),
filename: 'bundle.js',
publicPath: '/public/'
},
resolve: {
extensions: ['.js', '.jsx', '.json']
},
stats: {
colors: true,
reasons: true,
chunks: false
},
module: {
rules: [
{enforce: 'pre', test: /\.jsx?$/, loader: 'eslint-loader', exclude: [/node_modules/]},
{test: /\.jsx?$/,loader: 'babel-loader', include: /src/, exclude: /node_modules/
},
{test: /\.json$/, loader: 'json-loader'},
{test: /(\.css)$/, loaders: ['style-loader', 'css-loader']},
{test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: "file-loader"},
{test: /\.(woff|woff2)$/, loader: "url-loader?prefix=font/&limit=5000"},
{test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: "url-loader?limit=10000&mimetype=application/octet-stream"},
{test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: "url-loader?limit=10000&mimetype=image/svg+xml"}
]
}
}
}
そして、これが私のapp.jsです:ブラウザの履歴を使用するためには
'use strict'
import React from 'react'
import ReactDOM from 'react-dom'
import Layout from './components/common/Layout'
import { Router, Route, IndexRoute, browserHistory } from 'react-router'
import configureStore from './store/configureStore'
import { Provider } from 'react-redux'
const store = configureStore()
class App extends React.Component {
render() {
return (
<Provider store={store}>
<Router history={browserHistory}>
<Route path='/' component={Layout}></Route>
</Router>
</Provider>
)
}
}
ReactDOM.render(<App />, document.getElementById('app'))
ありがとうございます! これは他のユーザーにはhistory2.1.2以下でしか動作しないことを指摘したいと思います。私は当初、最新バージョンのヒストリーをインストールして、空白のページがレンダリングされるようにしました。 –
以前使用していた 'history'のバージョンは? changelogのhttps://github.com/mjackson/history/blob/v3.2.1/CHANGES.md#300-0を見ると、v3では 'hashHistory'にはデフォルトでクエリキーが含まれていないようです。 v4は今後のv4のReact Routerで使用するために書き直されたため動作しません。 –
これは実際にデフォルトでインストールされたv4でした。私はv3をテストして 'querykey:false'を削除しましたが、コンソールに新しいエラーが発生しました:' bundle.js:578 Uncaught Error:履歴v3.xで作成された履歴オブジェクトを提供しました。このバージョンのReact Routerは、v3の履歴オブジェクトと互換性がありません。代わりに履歴v2.xを使用してください。 ' 私は2に固執するように見えますか? 注:私は[email protected]を使用しています –