- Notifications
You must be signed in to change notification settings - Fork1
License
NotificationsYou must be signed in to change notification settings
qontu/component-store
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Inspired (semi-forked) ofhttps://github.com/amcdnl/ngrx-actions
The mission of this (another more... 😆)store is to maintain the state of a component (not the wide app).
I have been searching for one and I didn't find any... then, I created it 😅
This module depends onimmer
npm i immer @qontu/component-store oryarn add immer @qontu/component-store
You can see an examplehere
Because it's a powerful inmutable state tree, it allow us to do:
interfaceUserListState{users:User[],usersMap:Record<number,User>,}@Store<UserListState>({users:[],usersMap:{},})exportclassUserListStore{ @Action(Update)updateUsingImmer(state:UserListState,{ user}:Update){constuserToUpdate=state.users.find(({ id})=>id===user.id);Object.assign(userToUpdate,user);} @Action(Update)updateWithoutImmer(state:UserListState,{ user}:Update){return{ ...state,users:[ ...state.users.filter(({ id})=>id!==user.id),user,]}}// Update an object-map @Action(Update)updateUsingImmer(state:UserListState,{ user}:Update){state.usersMap[user.id]=user;} @Action(Update)updateWithoutImmer(state:UserListState,{ user}:Update){return{ ...state,usersMap:[ ...state.usersMap,[user.id]:user,]}}}
you can use both in the same time, choose the one that you prefer 😄
About
No description or website provided.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
No packages published
Contributors2
Uh oh!
There was an error while loading.Please reload this page.