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

Akita

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

Сортировки

По умолчанию хранилище возвращает сущности в том порядке, в котором они поступили с сервера. Добавленные вами объекты помещаются в конец коллекции.

Вы можете предпочесть получение сущностей из хранилища в каком-то другом порядке, предоставив опцию sortBy, которая может основываться на ключе объекта или функции сравнения.

Akita будет хранить коллекцию в порядке, установленном вашим ключом.

Вы можете установить его один раз для всего запроса:

import { QueryConfig, Order } from '@datorama/akita';

@QueryConfig({
  sortBy: 'price',
  sortByOrder: Order.ASC // Order.DESC
})
export class ProductsQuery extends QueryEntity<State, Product> {
  constructor(protected store: ProductsStore) {
    super(store);
  }
}

Или же вы можете сделать его динамичным при использовании функции selectAll():

this.products$ = this.sortControl.valueChanges.pipe(
   startWith('title'),
   switchMap((sortBy) => this.productsQuery.selectAll())
 );

Функция запроса sortBy также передает все состояние в качестве третьего аргумента, давая вам возможность вернуть другую функцию sortBy в зависимости от текущего состояния. Например:

const sortBy = (a, b, state) => (state.sortyByPrice ? sortByPrice(a, b) : sortById(a, b));

// с QueryConfig
@QueryConfig({ sortBy })

// с selectAll
queryTodos.selectAll({ sortBy });
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться