Как заполнить компоненты данных состояния Angular за один серверный вызов? - PullRequest
0 голосов
/ 11 ноября 2019

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

Получив JSON , я хотел бы разбить данные, заполнив их, на services свойства с observables, например userService, documentService.

Мне нужно создать для каждого свойства службы примерно 20 свойств Subject для каждого из них и subscribe() для них в компоненте, который в этом нуждается (чтобы увидеть новое состояние ввид) приводит к проблемам с производительностью, или лучше добавить некую модель и обновить ее, например, в группах свойств в одном Subject?

Что происходит в этих случаях, когда вы получаете столько свойств состояния, и вам приходится распределять их по всем компонентам без использования хранилища состояний?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

В моем текущем проекте нам также нужно было получить данные нескольких компонентов при первом вызове. Мой подход состоял в том, чтобы создать службу событий, где все события данных перенаправляются. Начальный компонент подписывается на первый запрос get, затем уведомляет службу событий о полученных данных. Все остальные компоненты, подписанные на это событие, анализируют данные, применимые только к этому компоненту. Каждый подкомпонент отвечает только за часть данных. Они меняют графическое состояние по мере необходимости и сохраняют изменения.

Как только пользователь обновляет страницу, цикл начинается заново.

Это очень быстрый, надежный и полностью компонентный компонент. Принцип единой ответственности на практике.

0 голосов
/ 11 ноября 2019

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

Нет ничего плохого в том, чтобы получить все необходимые данные за один http-вызов. На самом деле это может быть более эффективным, потому что самая дорогая часть HTTP-запроса - это накладные расходы на настройку HTTP-соединения.

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

Однако вы упомянули «без использования какого-либо состояния». место хранения". Мой вопрос: почему бы не использовать хранилище состояний, например, Redux или ngrx / store? Если вы сделаете все это в отдельных сервисах, с Темами и подписками, вы будете в значительной степени заново изобретать то, что делает хранилище состояний, возможно, просто не так хорошо.

Я говорю по опыту. У меня есть приложение, в котором я думал, что просто не стоит добавлять магазин в мое приложение (я никогда не использовал его в тот момент), и написал что-то похожее на то, что вы предлагаете. Количество данных со временем росло, и я все равно добавил хранилище (в моем случае Redux), и когда я закончил, я хотел, чтобы я использовал хранилище с самого начала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...