Модель JSON Monolith, как она соотносится с состоянием и конструированием Магазина? - PullRequest
0 голосов
/ 04 мая 2018

У меня есть проект, в котором я получаю большой JSON, который по сути становится состоянием программы. Глупый пример JSON может выглядеть так:

{
   app: {
     people: [
        {
            name: "bill",
            dob: "04/05/2017",
        }
     ]
   }
}

Так что это мои данные. Но это не мое состояние, которое может выглядеть примерно так с инициализацией по умолчанию.

   app: {
     people: []
   }

И я действительно хочу, чтобы это было

   app: {
     people: [
        {
            name: "bill",
            dob: "04/05/2017",
            daysOld: 365
        }
     ]
   }

Ключевая вещь, которую я не понимаю ни в ngrx / ngxs, это отношения между моей моделью и моим состоянием. Лампочка, которая не срабатывает.

  1. Какой механизм отвечает за создание коллекции людей?
  2. Какой механизм отвечает за подсчет возраста каждого человека

Или я совсем вне трассы? Является ли попытка создать весь магазин заранее из монолита просто неправильный подход? Например, куда-то уходит моя модель, и я использую это как ссылку для динамического создания состояния позже?

1 Ответ

0 голосов
/ 07 мая 2018

Я изучал ngxs за последнюю неделю из двух.

Это то, что я понимаю.

В: Какой механизм отвечает за создание коллекции людей?

A: @Action() декорированные функции в вашем @State() декорированном классе должны отвечать за манипуляции с состоянием и операциями вашего приложения с побочными эффектами (то есть асинхронная работа, как HTTP GET / POST).

Таким образом, создание объекта person с помощью управления состоянием вашего приложения и сохранение объекта person на сервере обрабатываются в @Action оформленных функциях.


В: Какой механизм отвечает за подсчет возраста каждого человека

A: Вы можете выбрать срез состояния вашего приложения, в этом случае dob человека и вычислить возраст, а затем вернуть значение (как «производное» значение состояния). Это можно сделать с помощью функций @Select().


В: Попытка заранее создать целый магазин из монолита - просто неправильный подход?

A: Я не знаю. Я думаю, что зависит от характера вашего приложения. Я полагаю, что мы не можем постоянно загружать данные всего приложения в состояние (память) - если только состояние приложения не очень маленькое.


В: Например, куда-то уходит моя Модель, и я использую это как ссылку для динамического создания состояния позже?

A: Я думаю, что это происходит в большинстве случаев. Итак, в @State() оформленном классе мы добавим какой-то HttpPersonLoaderService, куда вы в какой-то момент позвоните, чтобы загрузить / сохранить удаленно.


Наконец, просто хочу поделиться с вами простым примером ngxs . Этот простой пример не загружает данные удаленно, хотя.

...