Я использую on-router и redux в своем последнем приложении, и мне приходится сталкиваться с несколькими проблемами, связанными с изменениями состояния, требуемыми на основе текущих параметров и запросов URL.
В принципе у меня есть компонент, который должен обновлять его при каждом изменении URL-адреса. Государство передается через реквизит с помощью редукса с таким декоратором
@connect(state => ({
campaigngroups: state.jobresults.campaigngroups,
error: state.jobresults.error,
loading: state.jobresults.loading
}))
В настоящий момент я использую метод жизненного цикла componentWillReceiveProps, чтобы реагировать на изменения URL-адреса, исходящие от реагирующего маршрутизатора, так как реактивный маршрутизатор будет передавать новые реквизиты обработчику, когда URL-адрес изменится в this.props.params и this.props. query - основная проблема с этим подходом заключается в том, что я активирую действие в этом методе для обновления состояния, которое затем переходит и передает новые реквизиты компонент, который снова вызовет один и тот же метод жизненного цикла - таким образом, в основном создавая бесконечный цикл, в настоящее время я Я устанавливаю переменную состояния, чтобы это не происходило.
componentWillReceiveProps(nextProps) {
if (this.state.shouldupdate) {
let { slug } = nextProps.params;
let { citizenships, discipline, workright, location } = nextProps.query;
const params = { slug, discipline, workright, location };
let filters = this._getFilters(params);
// set the state accroding to the filters in the url
this._setState(params);
// trigger the action to refill the stores
this.actions.loadCampaignGroups(filters);
}
}
Существует ли стандартный подход для запуска базы действий на переходах маршрута ИЛИ могу ли я иметь состояние хранилища, напрямую связанное с состоянием компонента, вместо того, чтобы передавать его через реквизиты? Я попытался использовать staticTransitionTo статический метод, но у меня нет доступа к this.props.dispatch там.