browserHistory не работает, когда пользователь находится на одном и том же базовом URL с разными параметрами запроса

#reactjs #react-router

#reactjs #реагировать-маршрутизатор

Вопрос:

browserHistory не работает, когда я нахожусь на том же базовом URL, но с разными параметрами запроса.

 // currently i am on same url but different query param's.

**settings/organization/appointment-manager?from=2020-04-04T09:58:29.761Zamp;to=2020-04-04T09:58:29.761Zamp;pageNo=1amp;pageSize=30amp;activeKey=3**


import { browserHistory } from 'react-router';
import moment from 'moment-timezone';


refresh(){

// I want to call componentDidMount again when i push the bellow URL.

const startDate = moment();
const endDate = moment();
 browserHistory.push(`/settings/organization/appointment-manager?from=${startDate}amp;to=${endDate}amp;pageNo=1amp;pageSize=30amp;activeKey=3`);
}
  

При вызове refresh() мой URL-адрес изменился на новый параметр, но componentDidMount() не вызывается.

Как componentDidMount() можно вызвать снова, когда я нахожусь на том же базовом URL-адресе с разными параметрами запроса.

Комментарии:

1. Используйте componentDidUpdate, если вы хотите вызвать что-то на этапе обновления. componentDidMount вызывается только при монтировании компонента.

Ответ №1:

Что вам следует сделать здесь, так это использовать componentWillRecieveProps() . Потому что все, что вы делаете, это обновляете router реквизиты.

Так что попробуйте сделать это:

     componentWillReceiveProps(newProps) {
        if (newProps.location.search !== this.props.location.search) {
            //search params have changed
        }
    }
  

или для более новой версии React

     getDerivedStateFromProps(nextProps, prevState) {
        if (nextProps.location.search !== this.props.location.search) {
            //search params have changed
        }
    }
  

Комментарии:

1. componentWillRecieveProps устарел