2016-10-03 23 views
0

私の反応アプリをIE Edgeブラウザのファイルシステムで動作させようとしています。これまで私はこれまでこれを得てきた。React Router basenameを動作させるにはどうすればいいですか

import { createHistory, useBasename } from 'history' 
let appHistory = useBasename(createHistory)({ 
    basename: '/build' 
}); 
<Router history={appHistory}> 
<Route path={window.location.pathname} component={App}> 

そして、私は実際にページをレンダリング見ることができるこの方法が、ルートは、私はまた、エッジブラウザのファイルで、このパスを取得 動作しません:/// C:/ C:/ ...などなぜ2つのC:/がありますか? Chromeで

私はこのエラー

捕捉されないのDOMExceptionを取得するには、 '歴史' on 'にpushState' の実行に失敗しました:URLと 履歴状態オブジェクト 'ファイルを:/// C:/ビルド/ Windowsの'null'とURL 'file:/// C:/src/myproject/build/index.html'を含むドキュメントには を作成できません。

+0

をたぶん、あなたはガイドから、このコードを持って、私は非常に間違っているんだけど、私はwindow.location.pathname' 'へのパスを設定するように感じますすべきではない。文字列をパスとして指定する必要があります。例: 'path = {'/'}' –

+0

実際にはファイルシステムのwindow.location.pathnameでのみ動作します。唯一の問題は、押しボタンが機能しないことです。 –

答えて

2

あなたが代わりにuseBaseNameuseRouterHistoryを使用する必要があります。

import { Router, Route, useRouterHistory } from 'react-router' 
import createBrowserHistory from 'history/lib/createBrowserHistory' 

const history = useRouterHistory(createBrowserHistory)({ 
    basename: '/dist' 
}); 

<Router history={history}> 
    <Route path="/" component={App} /> 
</Router> 
関連する問題