skoder
@skoder
web программист

React + Redux когда посылать AJAX запрос?

Здравствуйте.
Есть некое приложение, в котором пользователь создает заказ. заполняет кучу различных полей, но кнопки Заказать нет. Место этого, как только форма будет полностью заполнена, на сервер должен быть отправлен ajax запрос автоматом, и показана цена.
Я использую redux, поэтому при заполеннии формы проблем нет, для автокомплита я вызываю ajax запросы в actions, а по результату стреляю в редуктор ответ сервера. Редуктор проводит манипуляции с информацией и state и компонент отрисовывает представление.
О том, что форма полностью и верно заполнена, знает только редуктор. У него есть данные, он может проверить все поля. Он может сказать компоненту, показать кнопку - Заказать, в этом случае.
Но ведь редуктор не может вызывать отправку AJAX запроса в моем варианте?!
Ну ум приходит только некое поле, в которое редуктор запишет true, и уже компонент запустит какой-то action на onComponentDidUpdate, нормальна ли такая схема?
Получится какой-то круг, где компонент отрисуется лишний раз без надобности на то.
  • Вопрос задан
  • 957 просмотров
Решения вопроса 1
@Aves
Для redux нормальная схема. Чтобы избежать лишних отрисовок, нужно использовать shouldComponentUpdate, а запрос отправлять из componentWillReceiveProps. Можно приметно так:
componentWillReceiveProps(nextProps) {
  if (nextProps.complete && !this.props.complete) this.sendRequest();
}

shouldComponentUpdate(nextProps) {
  const changed = Object.keys(nextProps).filter(e => nextProps[e] !== this.props[e]);
  if (changed.length == 1 && changed[0] == 'complete') return false;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы