This course is about how to work with ngrx angular nativescript. I will create a simple crypto mobile application with ngrx angular nativescript. You can find all code inside of course with github link.
What is NgRx?
NgRx is a framework for building reactive applications in Angular. NgRx provides libraries for:
Managing global and local state.
Isolation of side effects to promote a cleaner component architecture.
Entity collection management.
Integration with the Angular Router.
Developer tooling that enhances developer experience when building many different types of applications.
NgRx packages are divided into a few main categories
Store - RxJS powered global state management for Angular apps, inspired by Redux.
Effects - Side effect model for @ngrx/store.
Router Store - Bindings to connect the Angular Router to @ngrx/store.
Entity - Entity State adapter for managing record collections.
ComponentStore - Standalone library for managing local/component state.
Store Devtools - Instrumentation for @ngrx/store that enables visual tracking of state and time-travel debugging.
Schematics - Scaffolding library for Angular applications using NgRx libraries.
ESLint Plugin - ESLint rules to warn against bad practices. It also contains a few automatic fixes to enforce a consistent style, and to promote best practice.
NgRx Store provides state management for creating maintainable, explicit applications through the use of single state and actions in order to express state changes. In cases where you don't need a global, application-wide solution to manage state, consider using NgRx ComponentStore which provides a solution for local state management.
When Should I Use NgRx Store for State Management?
In particular, you might use NgRx when you build an application with a lot of user interactions and multiple data sources, or when managing state in services are no longer sufficient.
A good guideline that might help answer the question, "Do I need NgRx Store?" is the SHARI principle:
Shared: state that is accessed by many components and services.
Hydrated: state that is persisted and rehydrated from external storage.
Available: state that needs to be available when re-entering routes.
Retrieved: state that must be retrieved with a side-effect.
Impacted: state that is impacted by actions from other sources.
However, realizing that using NgRx Store comes with some tradeoffs is also crucial. It is not meant to be the shortest or quickest way to write code. It also encourages the usage of many files.
It's also important to consider the patterns implemented with NgRx Store. A solid understanding of RxJS and Redux will be very beneficial before learning to use NgRx Store and the other state management libraries.