example - Entender el propósito del proyecto ngrx router-store en comparación con solo usar el router angular 2
ngrx platform github (1)
Me refiero al proyecto ngrx del router-store ( https://github.com/ngrx/router-store ).
No tengo claro cómo usar este proyecto ...
Por ejemplo, tomemos el siguiente ejemplo de la documentación del proyecto:
store.dispatch(go([''/path'', { routeParam: 1 }], { query: ''string'' }));
¿Está destinado a ser utilizado como reemplazo del enrutador angular 2: router.navigate([''/path...
?
... o debo usar el ngrx router-store solo en ciertas circunstancias? (¿De ser asi, cuales?)
Además, ¿qué sucede con el ngrx router-store cuando se hace clic en <a routerLink="/heroes"
enlace html de enrutador angular 2, por ejemplo, <a routerLink="/heroes"
?
De manera más general, ¿puede alguien explicar qué se ha logrado con el proyecto ngrx router-store en comparación con el uso del enrutador angular simple 2?
O para reformular, ¿qué aporta ngrx router-store además del enrutador angular 2?
Edición : una fuente interesante de información y ejemplos sobre ngrx es, por supuesto, la aplicación de ejemplo ngrx ( https://github.com/ngrx/example-app ).
Encontré una dependencia del enrutador-tienda allí, pero no he podido encontrar dónde se usa el enrutador-tienda dentro de la aplicación ...
Para su información, aquí está el comentario que se encuentra en la aplicación de ejemplo sobre el almacén del enrutador:
@ ngrx / router-store mantiene el estado del enrutador actualizado en la tienda y utiliza la tienda como la única fuente de la verdad para el estado del enrutador.
https://github.com/ngrx/router-store , por lo que es posible que la tienda sea la única fuente de la verdad para el estado de enrutamiento de una aplicación.
Sin él, habría estado de aplicación (la ruta actual) no representada en la tienda. Eso significa que la depuración del viaje en el tiempo utilizando DevTools no sería posible, ya que no habría ningún estado en la tienda que represente la ruta y no habría acciones que representen los cambios de ruta.
El router-store
no reemplaza al router angular; simplemente conecta a los oyentes para las acciones de enrutamiento y para el enrutador.
Cuando emite una acción de enrutamiento utilizando el creador de acción go
, el router-store
escucha una acción "[Router] Go"
que contiene la ruta especificada que luego llama al método del enrutador correspondiente. Cuando el router-store
oye - desde el enrutador - que la ruta ha cambiado, emite una acción "[Router] Update Location"
que representa el cambio de ruta y esa acción ve el estado del enrutador en la tienda actualizada.
Si, en lugar de usar el creador de acción go
, se usa un routerLink
para efectuar un cambio de ruta, el router-store
escuchará el cambio y emitirá una acción "[Router] Update Location"
que verá actualizado el estado del enrutador de la tienda.
Por lo tanto, si la ruta se cambia a través de acciones o enlaces más tradicionales, la tienda siempre contiene el estado del enrutador.
Con las acciones "[Router] Update Location"
que representan cambios de ruta, puede deshacer dichos cambios de ruta a través de DevTools, algo que no sería posible si el estado del enrutador no estuviera representado en la tienda.
Si no ha utilizado los DevTools de Redux, le recomendaría que los revise: