React Router v2.4 {queryKey: false} больше не работает

Я обновил react-router до последней версии - 2.4.1
Я использую hashHistory в своем приложении

import { Router, useRouterHistory } from 'react-router'
import { createHashHistory } from 'history'
// useRouterHistory creates a composable higher-order function
const appHistory = useRouterHistory(createHashHistory)({ queryKey: false })
<Router history={appHistory}/>

И теперь я получаю сообщение об ошибке

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

Как я могу это исправить?

Я не хочу, чтобы в URL-адресе появился дополнительный ключ запроса. Я ожидаю такого же поведения, как от маршрутизатора angular или магистрального маршрутизатора.

Ответ 1

Это предупреждение на самом деле не связано с React Router, но с историческим модулем, которое оно использует. Фактически, последняя версия (3.0.0, 30 мая 2016) не работает вообще с React Router:

Неоткрытое инвариантное нарушение: вы предоставили объект истории, созданный с помощью истории v3.x. Эта версия React Router несовместима с объектами истории v3. Вместо этого используйте историю v2.x.

Это предупреждение присутствует от версии 2.5.1 (24 июня 2016 г.).

Таким образом, самым простым решением является просто использовать ту же версию React Router, используя ее package.json:

"history": "^2.0.1"

После этого параметр queryKey работает так, как ожидалось.

Ответ 2

Вы можете использовать const history = useRouterHistory(createHashHistory)();, но затем кнопка обновления или возврата приведет к белой странице. Он очень похож на browserHistory, который требует правильного функционирования mod_rewrite или промежуточного программного обеспечения.

Может быть, кто-то знает, почему они изменили это так, потому что для меня это не имеет смысла.

Ответ 3

Это сработало для меня

const appHistory = useRouterHistory(createHashHistory)();