RYAZHAPOVILNUR / ngx-smart

0 stars 0 forks source link

Идея: создать функционал для глобального стейта и сделать красовое и бесшовное подключение к локальному стейту #26

Open RYAZHAPOVILNUR opened 1 year ago

RYAZHAPOVILNUR commented 1 year ago

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

Можно придумать такое решение чтобы каждый локальный стор сразу же знал о глобальном, если такой вообще есть в приложении, но чтобы он не мог самостоятельно менять глобальный стор, мог только читать и кидать в него события

RYAZHAPOVILNUR commented 1 year ago

Можно даже переиспользовать тот же самый State который уже написан Создать класс GlobalState который будет наследоваться от State, указать ему providedIn: 'root'

Сделать возможность добавлять глобальный стейт через модуль

И сделать функцию provideGlobalState чтобы можно было провайдить в новом ангуляре без модулей

Создать функцию injectGlobalStore по которой можно в сервисе получить глобальный стор, затем где нужно инжектить его с помощью этой функции и работать так же как с локальным стором, ни при том что он будет один глобальный на все приложение

Если такое реализовать то решение будет полноценным настолько чо можно будет его юзать на маленьких и средних проектах

RYAZHAPOVILNUR commented 1 year ago

Тогда кейсы использования будет такой

Добавляем глобальный стор в модуль или bootstrap (для нового ангуляра) Инжектим глобальный стор где хотим в сервисах и вызываем его методы

Создаем локальные сторы в компонентах, у каждого локального стора будет поле globalStore в котором будут лежать readonly данные из глобального стора

При этом все что может сделать локальный стор это кинуть сообщение в глобальный стор, и, опционально, коллбек

Сервисы напрямую работают с глобальным стором через методы select, update, effect и тд При этом глобальный стор под капотом слушает все сообщения от локальных сторо, и на разные типы сообщений вызывает свои же методы