2017-02-03 1 views
24

Я ссылаюсь на проект ngrx-магазина nuterx-маршрутизатора (https://github.com/ngrx/router-store).Понимание цели проекта-маршрутизатора ngrx по сравнению с использованием только углового маршрутизатора 2

Я не ясно, как использовать этот проект ...

Например давайте рассмотрим следующую выборку из проектной документации:

store.dispatch(go(['/path', { routeParam: 1 }], { query: 'string' })); 

Это означает, что использование в качестве замены к угловой 2 маршрутизатор: router.navigate(['/path...?

... или я должен использовать ngrx-router-store только в определенных обстоятельствах? (если это так?)

Также, что происходит с маршрутизатором ngrx-маршрутизатора, когда угловая 2-канальная html-ссылка, например. <a routerLink="/heroes"?

В целом, может кто-нибудь объяснить, что достигнуто проектом ngrx-router-store по сравнению с использованием простого углового 2-роутера?

Или перефразировать, что делает ngrx router-store в дополнение к угловому 2-роутеру?

Редактировать: Интересным источником информации и образцов о ngrx является, конечно же, пример ngrx-app (https://github.com/ngrx/example-app).

Я нашел зависимость к маршрутизатору-магазина там, но я не смог найти, где маршрутизатор-магазин используется в приложении ...

FYI, здесь комментарий можно найти в пример приложения о маршрутизаторе магазине:

@ ngrx/маршрутизатор-магазин сохраняет состояние маршрутизатора уточненный в магазине и использует хранилище в качестве единственного источника истины для состояния маршрутизатора.

ответ

41

@ngrx/router-store существует, так что это возможно для магазина, чтобы быть single source of truth для режима маршрутизации приложения.

Без этого будет состояние приложения - текущий маршрут - не представлен в магазине. Это означает, что отладка во время путешествия с использованием DevTools будет невозможна, поскольку в хранилище, представляющем маршрут, не будет состояния, и не будет никаких действий, представляющих изменения маршрута.

router-store не заменяет Угловой маршрутизатор; он просто подключает слушателей к действиям маршрутизации и самому маршрутизатору.

Когда вы испускаете действие маршрутизации с помощью go action creator, A "[Router] Go" действия, содержащего путь предписанного в технических заданиях услышано router-store, который затем вызывает соответствующий метод маршрутизатора. Когда router-store слышит - от маршрутизатора - что маршрут изменился, он испускает действие "[Router] Update Location", представляющее изменение маршрута, и это действие видит состояние маршрутизатора в обновленном хранилище.

Если, вместо того, чтобы использовать создатель go действия, routerLink используется для осуществления изменения маршрута, router-store будет слышать изменения и будет излучать "[Router] Update Location" действия на которое будет видеть маршрутизатор состояние магазина обновляется.

Таким образом, изменяется ли маршрут посредством действий или более традиционных ссылок, в хранилище всегда содержится состояние маршрутизатора.

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

Если вы не использовали Redux DevTools, я бы порекомендовал вам проверить их:

+4

Кроме того, вы можете быть заинтересованы, чтобы знать что маршрутизатор Angular v3 был основан на ['@ ngrx/router'] (https://github.com/ngrx/router) и был [" построен вместе с командой '@ ngrx'] (http: // angularjs.blogspot.com. а.е./2016/06/улучшения ближайшего обмена на маршрутизацию-in.html). – cartant

+6

Убираем ли мы его в производство? если его использование только для помощи при переходе страницы DevTools или может быть использовано для других задач. – ramon22

+0

@ ramon22: Вы получили анс для этого? –

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