Как удалить хэш из URL-адреса в интерактивном маршрутизаторе
Я использую response-router для моей маршрутизации, и я использую параметр hashHistory, чтобы обновить страницу из браузера или указать URL-адрес одного из моих существующих маршрутов и приземлиться на нужную страницу.
Он работает нормально, но я вижу хэш в URL-адресе следующим образом:
http://localhost/#/login?_k=ya6z6i
Это моя конфигурация маршрутизации:
ReactDOM.render((
<Router history={hashHistory}>
<Route path='/' component={MasterPage}>
<IndexRoute component={LoginPage} />
<Route path='/search' component={SearchPage} />
<Route path='/login' component={LoginPage} />
<Route path='/payment' component={PaymentPage} />
</Route>
</Router>),
document.getElementById('app-container'));
Ответы
Ответ 1
Вы попробовали опцию browserHistory? Вы также сможете обновить страницу из браузера или указать URL-адрес одного из существующих маршрутов и приземлиться на правой странице.
import { Router, Route, browserHistory } from 'react-router';
ReactDOM.render((
<Router history={browserHistory}>
<Route path='/' component={MasterPage}>
<IndexRoute component={LoginPage} />
<Route path='/search' component={SearchPage} />
<Route path='/login' component={LoginPage} />
<Route path='/payment' component={PaymentPage} />
</Route>
</Router>),
document.getElementById('app-container'));
Кроме того, hashHistory не предназначен для использования в производстве с использованием gitub doc для взаимодействия с маршрутизатором.
https://github.com/ReactTraining/react-router/blob/master/docs/guides/Histories.md#browserhistory
Должен ли я использовать hashHistory?
История хешей работает без настройки вашего сервера, поэтому, если вы просто начинать, идти вперед и использовать его. Но мы не рекомендуем его использовать в производстве, каждое веб-приложение должно стремиться использовать browserHistory
Ответ 2
Вам нужно будет импортировать browserHistory
из browserHistory
react-router
и передать его в <Router/>
, чтобы удалить хэш из URL-адреса
Пример:
import { browserHistory } from 'react-router';
<Router history={browserHistory}>
//Place your route here
</Router>
Ответ 3
Попробуйте следующее:
// v1.x
import createBrowserHistory from 'history/lib/createBrowserHistory'
<Router history={createBrowserHistory()} />
// v2.0.0
import { browserHistory } from 'react-router'
<Router history={browserHistory} />
const history = createHashHistory({ queryKey: false });
<Router history={history}>
</Router>
https://github.com/reactjs/react-router/blob/master/upgrade-guides/v2.0.0.md#using-custom-histories
https://github.com/reactjs/react-router/blob/8ef625e8fa7c41dda0f3d1d68a10b74bd93a4101/docs/guides/ba...
Ответ 4
я новичок в реагировании, но я использовал BrowserRouter, и он отлично работает:
import React from "react";
import ReactDOM from "react-dom";
import { BrowserRouter, Route, Switch } from "react-router-dom";
ReactDOM.render(
<BrowserRouter >
<Switch>
{indexRoutes.map((prop, key) => {
return <Route to={prop.path} component={prop.component} key={key} />;
})}
</Switch>
</BrowserRouter>,
document.getElementById("root")
);
Ответ 5
Я попробовал. это не может работать для меня. Я получил эту ошибку. Uncaught TypeError: Невозможно прочитать свойство "location" неопределенного.