@qontu/component-store
TypeScript icon, indicating that this package has built-in type declarations

0.2.0 • Public • Published

Component Store

Inspired (semi-forked) of https://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 :sweet_smile:

Dependencies

This module depends on immer

How to install?

npm i immer @qontu/component-store or yarn add immer @qontu/component-store

How to use?

You can see an example here

Why do I need to install immer?

Because it's a powerful inmutable state tree, it allow us to do:

@Store<UserListState>({
  users: User[],
})
export class UserListStore {

  @Action(Update)
  updateUsingImmer(state: UserListState, { user  }: Update) {
    state.users[user.id] = user;
  }

  @Action(Update)
  updateWithoutImmer(state: UserListState, { user  }: Update) {
    return {
      ...state,
      users: [
        ...state.users.filter(({ id }) => id !== user.id),
        user,
      ]
    }
  }
}

you can use both in the same time, choose the one that you prefer 😄

Package Sidebar

Install

npm i @qontu/component-store

Weekly Downloads

2

Version

0.2.0

License

MIT

Unpacked Size

8.83 kB

Total Files

15

Last publish

Collaborators

  • tonivj5
  • caballerog