Загружать новые данные каждый раз при визуализации компонента или использовать данные хранилища - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь понять преимущества паттерна Redux в сочетании с Angular 2, но у меня постоянно возникает один вопрос.

Допустим, у меня есть страница панели инструментов, где я загружаю самые популярные продукты на своем веб-сайте.Когда я впервые посещаю эту страницу, будет отправлен вызов API для получения продуктов с сервера, и я храню эти продукты в своем магазине.До сих пор все хорошо.На странице панели инструментов я нажимаю, чтобы перейти на другую страницу, и через несколько секунд я возвращаюсь на панель инструментов.Когда я возвращаюсь на страницу панели инструментов, в магазине появляются данные, которые я могу показать пользователю.Вопрос заключается в том, должен ли я отправлять новый запрос API, чтобы получить самые последние данные, или мне просто отображать данные из магазина?Вот сценарии, которые мы можем проанализировать:

Отображение данных из хранилища

Если я отображаю данные из хранилища, эти данные могут быть не самыми обновленными данными, которые в настоящее время доступны на сервере, но ясохранен один вызов API.Другой вопрос: как и когда обновлять данные магазина или лучше сказать, когда данные моего магазина признаны недействительными?

Отправить запрос API

С другой стороны, если я отправляю вызов API каждый раз, когда я иду вто в чем преимущество хранения этих данных в хранилище (потому что я обновляю хранилище каждый раз, когда компонент отображается).Таким образом, я всегда получаю самые последние данные из API, которые затем могу, но мне не нужно сохранять их в хранилище, потому что эти данные будут в хранилище до тех пор, пока я снова не зайду на страницу панели инструментов.Таким образом, я также постоянно связываюсь с моим API, что не идеально.

Вопрос

Какой подход вы используете?

1 Ответ

0 голосов
/ 19 февраля 2019

Если вы используете шаблон Redux, то это должно быть единственной точкой истины.Это означает, что вы должны получать свои данные из магазина, а не напрямую из API.

как и когда обновлять данные магазина или лучше сказать, когда данные моего магазина аннулированы?Есть два подхода:

  1. Оптимистичный
  2. Пессимистичный

Первый подход предполагает, что все будет хорошо с вашим API сервера, и нетНеважно, что вы сохраняете данные в вашем магазине.Представьте, что вы отправляете запрос POST для сохранения продукта в БД через API, а сервер отвечает 500. Бум!В вашем магазине есть призрачный продукт.

Второй подход предполагает, что ничего не получается.В предыдущем примере с продуктом вы ничего не сохраняете в Магазине, если не получите ответ 200 от API.ИЛИ вы можете добавить продукт в магазине на первом месте, и удалить его, если что-то пойдет не так.

1016 * Теперь, в вашем вопросе, есть ли отправить запрос API или нет опять спорно :) НаКогда вы запрашиваете визуализацию компонента Dashboard, вы отправляете Action LOAD_DASHBOARD_PRODUCTS.Это действие запускает Effect , который, в свою очередь, отправляет запрос API на сервер для получения данных.Наконец, Resolver изменяет состояние определенного фрагмента Магазина.Где-то в вашем коде, скорее всего, в методе onInit (), вы запрашиваете данные из хранилища через определенный Selector .Этот селектор отвечает за запуск действия, о котором я упоминал ранее.

Чтобы ответить на ваш вопрос, это зависит от потока, который вы используете для загрузки данных панели мониторинга.В большинстве случаев я загружаю данные панели мониторинга каждый раз, когда загружаю панель мониторинга.

Однако ваша путаница очень точна.Зачем использовать шаблон Redux, если вам приходится снова и снова отправлять запрос API?Что ж, если сложность вашего проекта такого масштаба (Dashboad - продукты с простой страницей CRUD), тогда шаблон Redux - неправильный выбор.

...