Строгий менеджер состояний для приложений на javascript
При использовании хранилища сущностей, его начальное состояние является нетронутым, а когда вы вызываете store.set(), Akita меняет его на false. Вызов remove() снова устанавливает значение true.
Это можно использовать для определения наличия данных в хранилище, чтобы сэкономить на дополнительных запросах к серверу.
import { noop } from '@datorama/akita';
export class ProductsService {
constructor( private productsStore: ProductsStore,
private productsQuery: ProductsQuery,
private productsDataService: ProductsDataService ) {
}
get(): Observable<Product[]> {
const request = this.productsDataService.get().pipe(
tap(response => this.productsStore.set(response))
);
return this.productsQuery.isPristine ? request : noop();
}
}
setPristine()Устанавливает хранилизе в первоначальное состояние:
this.store.setPristine();
setDirty()Устанавливает хранилище в использованое состояние, указывая, что оно не является нетронутым:
this.store.setDirty();
isPristineВозвращает, является ли состояние хранилища нетронутым (метод set() не был явно вызван с момента создания хранилища или когда последний раз вызывался setPristine()).
if(this.query.isPristine) {}
isDirtyВозвращает, является ли состояние хранилища использованным (метод set() или метод setDirty() были явно вызваны с момента создания хранилища, или последний раз вызывался setPristine()).
if(this.query.isDirty) {}