Я использую response-router v4 для маршрутизации, чтобы проанализировать параметры запроса, рекомендуется использовать history.listen
здесь
Я вызываю его в ловушке жизненного цикла componentDidMount
, чтобы убедиться, что компонент смонтирован, чтобы я мог предоставить его как часть состояния компонента, используя компонент более высокого порядка следующим образом:
import createHistory from 'history/createBrowserHistory';
import qs from 'qs';
import { compose, lifecycle, withState } from 'recompose';
export const history = createHistory();
const withQs = compose(
withState('search', 'setSearch', {}),
lifecycle({
componentDidMount: function () {
// works on the client side
history.listen(() => {
// history.location = Object.assign(history.location,
// parse the search string using your package of choice
// { query: parseQueryString(history.location.search) }
// )
console.log('History Location', history.location);
console.log('Search', history.location.search);
})
}
})
)
export default withQs
history.listen
никогда не запускается, когда маршрут переходит на новую страницу или на страницу добавляется новый параметр запроса.
history
экземпляр в своем проекте? т.е. вы используете его для рендеринга<Router history={history}>
? - person Paul S   schedule 20.04.2017listen()
не срабатывает. У меня есть история, связанная с историей моего маршрутизатора, например:<Router history={history}>
, и я ожидаю, чтоlisten()
сработает при изменении маршрута, но этого не происходит. - person Troy Carlson   schedule 20.04.2017import BrowserRouter as Router from react-router-dom
. - person vamsiampolu   schedule 22.04.2017global
я не доволен. Я удалил перекомпоновку, чтобы упростить ее, но более старые коммиты будут показывать версию, в которой используется перекомпоновка. - person vamsiampolu   schedule 22.04.2017<Router>
, а не<BrowserRouter>
.<BrowserRouter>
создает свой собственныйhistory
экземпляр. - person Paul S   schedule 22.04.2017