2017-02-06 4 views
-1

Я пытаюсь получить, как добавить ngrx в мою текущую структуру проекта.Интеграция ngrx в мой код

У меня есть все понятия вокруг ngrx/reflux. Тем не менее, я не совсем понимаю, как восстановить структуру проекта, чтобы интегрировать его в мой проект.

  1. Где я могу добавить редукторы?
  2. Где я могу добавить состояния?
  3. Что относительно действий?
  4. Где должен храниться магазин, который должен вводиться в каждом компоненте?
  5. Где или когда данные должны быть получены с сервера?

Есть ли какая-либо проектная структура?

ответ

1

Во-первых, вы должны смотреть в @ngrx/store документации: https://github.com/ngrx/store#setup

Я сделал небольшой (смешной) проект, чтобы продемонстрировать, как использовать:
- angular
- ngrx/store
- ngrx/effects
- normalized state
- selectors

Yo и можно найти здесь: https://github.com/maxime1992/pizza-sync


Чтобы дать вам некоторую информацию о том, как это работает:
- core.module.ts это был я объявляю свой корень редуктор
- root.reducer.ts это был я построить корневой редуктор и compose it with middlewares согласно разработчика/прод окр
- для редуктора, я держу все related part together (интерфейс (ы) + редуктор + эффекты + селекторы)

Тогда в качестве компонента, чтобы получить доступ к магазин просто сделать как that:
Инжектируйте магазин:

constructor(private _store$: Store<IStore>) { } 

Получить данные либо
а) селектор (например)

this._pizzasCategories$ = this._store$.let(getCategoriesAndPizzas()); 

б) непосредственно из магазин (ex)

this._idCurrentUser$ = this 
     ._store$ 
     .select(state => state.users.idCurrentUser); 

Обратите внимание, что я не subscribe, который означает, что я использую в моем зрении async трубы так Угловой подписаться на Наблюдаемый для меня.

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


PS: Я буду выпускать стартер со всем, что уже установка, чтобы избежать потери времени со всеми, что при запуске нового проекта. Я попытаюсь выпустить его на этой неделе, и я обновлю это сообщение, как только это будет сделано. Может быть, это может вам помочь.

EDIT 12/05/17
Поздно, но я наконец-то выпустила стартер :)!
https://github.com/maxime1992/angular-ngrx-starter

+0

Спасибо! Тем не менее, я не совсем понимаю, почему вы создаете «SharedModule» и «CoreModule» ...? – Jordi

+0

Мне нравится держать «AppModule» максимально чистым. Чистым я имею в виду не писать в нем, так что безболезненно обновляться с помощью cli. Вы можете перенести этот «CoreModule» в «AppModule», если это более понятно вам и сохранить только «AppModule» + «SharedModule». – Maxime

+0

Хорошо, мой комментарий не просил вас об этом, мне кажется, все в порядке. Я имел в виду, какое содержимое (импорт, провайдеры ...) вы назначаете «CoreModule», а другие - в «SharedModule». Я не знаю, объяснил ли я так хорошо ... – Jordi

Смежные вопросы