Перенаправить на страницу после отправки действия (ngredux)

У меня есть проект с угловым 6 + ngredux, и я хочу совет для следующей ситуации:

  • У меня есть страница с подробным обзором (информация только для чтения), заполненная данными из состояния приложения. На этой странице у меня есть несколько кнопок, которые открывают другие страницы (здесь у нас есть несколько форм - в этих формах пользователь может редактировать некоторые поля).
  • Когда пользователь сохранит данные, он должен вернуться на страницу сведений об обзоре. Поскольку мы используем ngredux, и мы обновляем значения из состояния приложения, мы обрабатываем это в компоненте, используя такой компонент, как:

    onSubmit(){
    this.actionsCreator.save(this.model);
    const route = 'details/' + this.objId;
    this.router.navigate([route]);
    } 
    

Проблема, с которой мы столкнулись, заключается в том, что если метод "save" занимает 2-3 секунды в API, пользователь перенаправляется первым, а после этого модель сохраняется и обновляется в состоянии приложения (это нормально - мы делаем перенаправить неправильно).

Для отправки действий мы используем пользовательское промежуточное ПО.

return next => action => {
const {type, callApi, shouldCallApi, success = function () { }} = action;
if (!shouldCallApi) { return next(action);}
if (typeof callApi !== 'function') {throw new Error('Expected callApi to be a function');}
if (typeof shouldCallApi !== 'function') {throw new Error('Expected shouldCallApi to be a function');}
if (!shouldCallApi(getState())) {return;}

return callApi().subscribe(response => {
    success(response);
    return dispatch({type: type,payload: response || null});
    });
};

Поэтому я хочу получить рекомендацию о том, как справляться с такими ситуациями. Должны ли мы внедрить роутер в службу actionsCreator (это правильный путь) и при отправке сделать перенаправление (в случае успеха)? Или от редуктора? Или только из компонента?

0 ответов

Другие вопросы по тегам