ngrx для операций CRUD профиля пользователя - PullRequest
0 голосов
/ 02 сентября 2018

Я немного новичок в мире использования Redux (и, в свою очередь, ngrx для Angular / Ionic проектов) для управления состоянием, но я сделал несколько примеров учебных пособий и мне очень понравилась методология, и насколько устойчивое состояние.

Однако ни один пример, который я нашел до сих пор, не охватывает некоторые вопросы, которые у меня есть. Учитывая Profile модель:

export class Profile {
   public id?: string;
   public name?: string;
   public interests?: Interest[];
   public jobs?: Job[];
}

У меня есть несколько вопросов, если кто-нибудь может указать мне правильное направление:

  1. Как лучше подходить к созданию магазинов и штатов? Должен ли я создать один мега-магазин, который делает все от проверки подлинности до добавления / удаления jobs или interests?
  2. Можно ли как-нибудь поделиться этим Profile объектом состояния между магазинами?
  3. Должен ли я управлять состоянием interests и jobs отдельно, а затем использовать действие, чтобы обновить профиль пользователя, когда он будет готов к синхронизации, и получить эти значения из состояния приложения?
  4. Может ли действие из одного магазина (скажем, SaveInterests в InterestsActions) вызвать действие из другого магазина (скажем, SaveInterests => SaveProfile)?

1 Ответ

0 голосов
/ 02 сентября 2018

В типичном приложении redux или ngrx вы увидите только один магазин. Состояние вашего приложения будет представлено как один большой объект JavaScript. Для получения дополнительной информации см. Документы Redx Три принципа и Основные понятия .

Структура вашего магазина должна быть нормализована, см. Документы в формате Redx Форма состояния нормализации или сообщение NgRx: Состояние нормализации . Это значит, что это будет выглядеть примерно так:

{
  profiles: {...},
  interests: {...},
  jobs: {...},
}

Как только данные сохраняются в хранилище, они становятся доступными для всего приложения.

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

...