У вас включен AdBlock или иной блокировщик рекламы.

Пожалуйста, отключите его, доход от рекламы помогает развитию сайта и появлению новых статей.

Спасибо за понимание.

В другой раз
DevGang блог о програмировании
Авторизоваться

Akita

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

Поделится

Неизменные массивы

В дополнение к своим хранилищам, Akita предоставляет вам различные методы неизменяемых массивов, которые могут помочь вам в обновлении хранилища:

  • toggle<T>( array: T[], item ): T[]
import { toggle } from '@datorama/akita';

this.store.update(entity => {
  return {
    ...entity,
    toppings: toggle(entity.toppings, 'olives') // add if doesn't exists and remove if exists
  }
});
  • push<T>( array: T[], ...elementN ): T[]
import { push } from '@datorama/akita';

this.store.update(entity => {
  return {
    ...entity,
    roles: push(entity.roles, 'admin')
  }
});
  • remove<T>( array: T[], index: number ): T[]
import { remove } from '@datorama/akita';

this.store.update(entity => {
  return {
    ...entity,
    roles: remove(entity.roles, 1)
 }
});
  • pop<T>( array: T[] ): T[]
import { pop } from '@datorama/akita';

this.store.update(entity => {
  return {
    ...entity,
    roles: pop(entity.roles)
  }
});
  • unshift<T>( array: T[], ...elementN ): T[]
import { unshift } from '@datorama/akita';

this.store.update(entity => {
  return {
    ...entity,
    roles: unshift(entity.roles, 'admin', 'editor')
  }
});
  • reverse<T>( array: T[] ): T[]
import { reverse } from '@datorama/akita';

this.store.update(entity => {
  return {
    ...entity,
    roles: reverse(entity.roles)
  }
});
  • swap<T>( array: T[], firstIndex: number, secondIndex: number ): T[]
import { swap } from '@datorama/akita';

this.store.update(entity => {
  return {
    ...entity,
    roles: swap(entity.roles, 1, 4)
  }
});
  • update<T>( array: T[], indexOrItem: number | object, updated: any ): T[]
import { update } from '@datorama/akita';

this.store.update(entity => {
  return {
    ...entity,
    roles: update(entity.roles, 1, 'replaced')
  }
});

this.store.update(entity => {
  return {
    ...entity,
    roles: update(entity.roles, entity.roles[1], { replace: true })
  }
});
  • splice<T>( array: T[], start = array.length, deleteCount = array.length - start, ...elementN ): T[]
import { splice } from '@datorama/akita';

this.store.update(entity => {
  return {
    ...entity,
    roles: splice(entity.roles, 0, 2, 'lorem', 'ipsum')
  }
});

this.store.update(entity => {
  return {
    ...entity,
    roles: splice(entity.roles, 0, 1)
  }
});

this.store.update(entity => {
  return {
    ...entity,
    roles: splice(entity.roles, 0, -3)
  }
});

Подробнее про этот объект можно посматреть тут