2016-05-16 7 views
5

У меня есть приложение Redux с React Router (на основе https://github.com/este/este).Отклонить ожидающее действие предыдущего маршрута при переходе страницы в приложении Redux

Внутри одного маршрута может быть более 1 AJAX-вызовов (уволено redux-promise-middleware & redux-thunk). Когда страница изменяется (через react-router), я хочу отклонить все оставшиеся _SUCESS или _FAILED обратный вызов actions, уволенный по предыдущему маршруту.

Каков наилучший способ для этого?

ответ

0

Я бы посоветовал вам делать данные, которые вы извлекаете из-за страницы. Это означает, что в действии, где начинается выборка, добавьте контекст страницы. Когда редуктор получает данные, он может либо сохранить его для этого контекста страницы, либо он может выбросить его, если местоположение не совпадает с вашим браузером (это означает, что пользователь прошел навигацию). Если вы сохраняете данные для разных страниц/контекстов, у вас также есть бонус, если они готовы, если пользователь вернется (если это то, что вам нужно).

  1. Вы находитесь на странице "/ pageX". Вы начинаете получать данные, и действие гарантирует, что контекст страницы запоминается, когда будет отправлено действие УСПЕХА. Когда редуктор обрабатывает действие, он сохраняет данные в store.context["/pageX"].data (или аналогичных). Примечание. Здесь вы также можете выбросить его (отклонить), если текущее местоположение не совпадает с полученными данными.

  2. Пользовательский интерфейс должен знать, как запрашивать/использовать данные из контекста, соответствующего его местоположению.

Вы также можете рассмотреть возможность отслеживания браузерного места в состоянии для приложения ...