Ответ 1
Чтобы избежать этого, вы можете установить queryKey
в false
при создании browserHistory
. Следующий пример иллюстрирует, что
import { Router, Route, BrowserHistory } from 'react-router';
let bHistory = BrowserHistory({
queryKey: false
});
<Router history={bHistory}>
<Route path="/" component={App}>
<Route path="about" component={About} />
<Route path="inbox" component={Inbox}>
{/* Add the route, nested where we want the UI to nest */}
<Route path="messages/:id" component={Message} />
</Route>
</Route>
Для React-router v2.0.0
import { Router, useRouterHistory } from 'react-router'
import { createHashHistory } from 'history'
const appHistory = useRouterHistory(createHashHistory)({ queryKey: false })
<Router history={appHistory}/>
Update:
С текущей версией React-router вам не нужно устанавливать модуль history npm отдельно. Он будет автоматически установлен как зависимость при установке реактивного маршрутизатора.
Если вы получите предупреждение:
Warning: Using { queryKey: false } no longer works. Instead,
just don't use location state if you don't want a key in your URL query string.
или queryKey : false
не работает.
Тогда может случиться так, что у вас может быть несовместимая версия истории с реактивным маршрутизатором. Просто проверьте, установлен ли модуль истории отдельно, если это так, то удалите его. Выше предупреждение исчезнет.
Изменить: для получения точных зависимостей
Если вы хотите узнать, какие зависимости требуется вашему "реагирующему маршрутизатору", проверьте пакет .json на github или вы можете попробовать выполнить следующую команду.
$ npm info "[email protected]" dependencies
{
history: '^2.1.2',
'hoist-non-react-statics': '^1.2.0',
invariant: '^2.2.1',
warning: '^3.0.0',
'loose-envify': '^1.2.0'
}