DevGang
Авторизоваться

Akita

Строгий менеджер состояний для приложений на javascript

Подержка классов

Акита также поддерживает использование класса в качестве базового значения вместо простого объекта. В большинстве случаев мы не рекомендуем делать это по следующим причинам:

  1. Мы не можем хранить классы в базе данных. Типичный пример этого - когда вам нужно сохранить снимок хранилища.
  2. Классы труднее использовать с веб-воркерами из-за проблем с сериализацией.
  3. Существуют различные сторонние инструменты (например, immer), которые работают только с простыми объектами.

Однако иногда они могут быть полезны. Вот пример, который использует класс:

export class User {
  constructor({firstName, lastName, token}: Partial<User>) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.token = token;
  }

  get name() {
    return `${this.firstName} ${this.lastName}`;
  }
}
export interface State extends EntityState<User> {}

@StoreConfig({ name: 'user' })
export class UserStore extends EntityStore<State, User> {
  constructor() {
    super();
  }
}

В этом случае, когда вы вызываете update(), add() или set(), Akita позаботится о создании нового пользователя путем слияния текущего состояния объекта с новыми параметрами.

Комментарии
Чтобы оставить комментарий, необходимо авторизоваться