2016-10-03 11 views
0

Я пытаюсь заставить свое приложение реагировать на работу с файловой системой в браузере IE Edge. До сих пор я так далеко добрался.Как получить базовое имя React Router для работы

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

И таким образом я могу реально увидеть страницу рендеринга, но маршруты не работают я также получить этот путь в файле браузера Эдж: /// C:/C:/... и т.д. Почему у него два C: /?

В хроме я получаю эту ошибку

Uncaught DOMException: Не удалось выполнить 'PushState' на 'История': A истории состояния объекта с URL 'файла: /// C:/сборки/окна' не может быть , созданный в документе с источником «null» и URL 'file: /// C: /src/myproject/build/index.html'.

+0

Может быть, вы получили этот код из руководства, и я очень неправильно, но я чувствую, как установка путь к 'window.location.pathname' не должно работать. Вы должны указать строку как свой путь, например: path = {'/'} ' –

+0

, фактически она работает только с window.location.pathname из файловой системы. Единственная проблема в том, что pushstate не работает. –

ответ

2

Вы должны использовать useRouterHistory вместо useBaseName:

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>