Подтвердить что ты не робот

Понимание цели проекта ngrx-router-store по сравнению с использованием только маршрутизатора angular 2

Я ссылаюсь на проект ngrx-хранилища маршрутизатора (https://github.com/ngrx/router-store).

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

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

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

Используется ли это для замены маршрутизатора angular 2: router.navigate(['/path...?

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

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

При действиях "[Router] Update Location", представляющих изменения маршрута, вы можете отменить указанные изменения маршрута через DevTools - что-то, что было бы невозможно, если состояние маршрутизатора не было представлено в хранилище.

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