Rules of Thumb pt2
When to create actions?
Anytime we want to interact with the store or API
No shortcuts
Use classes for actions
Use enums for action names
Export actions types using a union type
3 action approach - request, success, failure
Consider Action Creators
Single action that does everything - Anti Pattern
// Single action that does everything
export class UpdateUsers implements Action {
readonly type = UserActionTypes.UpdateUsers;
constructor(public payload: { users: User[] }) {}
}
Sample Action
Related/Nested Data
Don’t do it
Complicates reducers
Easy to mutate store
Prefer dictionaries vs arrays (NgRx Entity)
Maximize Selectors
Use Selectors to filter/manipulate data from the store
Supports parameters
Memoized
Release memoization
Service With a Subject
Most projects don’t need NgRx
Simple pattern
Works well with container/presenter
Upgradable to NgRx
Service with a subject basics
Regular Angular service
Private member variable of type BehaviorSubject
Public get prop to access stream
Service methods update stream
When NOT to use Service with a Subject?
Application or feature is complex
Want to track state changes
Recreate user errors
Implement advanced logging
Last updated
Was this helpful?