#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 устарел