Очень простое управление микро-архитектурой приложения
Эта библиотека предназначенна для помощи в создании React-приложений с чем-то похожим на архитектуру. За основу взят MobX. Библиотека позволяет организовать поток данных через инъекцию зависимостей (как в NestJS), а так же более приятно управлять состоянием.
yarn add @codeleaf-sdk/core
# required dependencies
yarn add mobx mobx-react-lite react
type Item = {
id: number;
name: string;
}
type Test = {
value: number,
arrayed: Item[];
}
class Tested extends Store<Test> {
constructor() {
super({
value: 1,
arrayed: [
{ id: 1, name: 'foo' },
{ id: 2, name: 'bar' }
],
});
}
}
const test = new Tested();
test.set('value', 2);
// Да, вот так просто!
const test = new Tested();
test.setItem('arrayed', ({ id }) => id === 1, { name: 'test' });
// Не то, чтобы это очевидная конструкция
// Но очень полезная!
const { Store, Service } = CreatePageModule<PageStore, PageService>({
store: [
PageStore,
[
{ target: FetchStore, args: [] }, /* controls data's fetch state */
{ target: TogglersStore, args: [] }, /* controls view mode */
{ target: TogglersStore, args: [] }, /* controls visibility */
],
service: [PageService, null /* no dependencies */],
});
class PageStore extends Store<PageStoreType> {
constructor(
readonly fetch: FetchStore, // автоматически добавляются в поля класса
readonly viewMode: TogglersStore,
readonly visibility: TogglersStore,
) {
//
}
someMethod() {
this.viewMode.set('state', true); // использование зависимости
}
}