Akita достигла версии 1.9, и пришло время подвести итоги добавленных нами новых функций.

🔥 DevTool Awesomeness

Мы добавили интеграцию между Akita и роутером Angular. Akita отслеживает состояние маршрутизатора, что делает возможным «путешествие во времени» с помощью инструментов разработки redux.

Для начала установите пакет @datorama/akita-ng-router-store и добавьте его и модуль Dev-tools Akita в модуль приложения.

Предоставлено Шахаром Казазом и Филипом Джунку.

Транзакции - это оптимизация для выполнения нескольких операций в магазине. Теперь вы можете точно увидеть, какие действия были выполнены, проверив транзакцию на вкладке Action.

Текущие обновления здесь! С этого момента мы можем запускать любую операцию хранилища прямо из командной строки redux dev-tools. Аккуратный!

💪 Дополнения CRUD

Методы update() и remove() хранилища сущностей теперь принимают функцию предиката. Например:

Предоставлено Дмитрием Ефименко.

Метод update() базового хранилища теперь принимает функцию обратного вызова:

setLoading(), setError(), selectLoading() и selectError(), которые раньше работали только с хранилищем сущностей, теперь также работают с базовым хранилищем. Например:

😇 Улучшения запросов

Теперь вы можете подписаться на все состояние, просто вызвав метод query select() без передачи функции обратного вызова. Например:

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

Предоставлено Дмитрием Ефименко.

💎 Улучшения плагинов

Плагин Persist Form может принимать ключ состояния конкретного хранилища и синхронизировать его с формой. Например:

Мы добавили метод ignoreNext() в плагин State History, который сообщает ему игнорировать следующий вызов обновления магазина. Вы должны позвонить в него перед обновлением магазина.

Плагин Persist State теперь может принимать определенный ключ, который будет синхронизироваться с предоставленным хранилищем. Например:

Мы добавили параметр свойства наблюдения в DirtyCheckPlugin. Например:

Иногда также полезно проверить, не загрязнен ли хотя бы один из объектов. Для этого вы можете использовать someDirty() метод EntityDirtyCheckPlugin.

Предоставлено Шахар Казаз.

🙏 Магазин Utils

Мы добавили пару утилит магазина.

Создайте уникальный идентификатор:

Помощники увеличения и уменьшения:

Переключить наличие элемента в массиве:

📚 Новые сообщения в блоге

Мы добавили много статей на разные темы, обязательно ознакомьтесь с ними. Спасибо Идо Гликману, Шахару Казазу, Йонатану Мегире и Инбалу Синаю.

Как всегда, мы хотели бы услышать от вас больше отзывов и запросов на новые функции.

⚡️ Последние советы

Используйте ngx-take-until-destroy - декларативный способ отказаться от подписки на наблюдаемые объекты при уничтожении компонента. Например:

С Акитой можно использовать иммер. Immer создает следующее неизменяемое дерево состояний, просто изменяя текущее дерево. Например:

👉🏻 Новая встреча Angular в Тель-Авиве

Мы проведем встречу под названием «Kickass Angular», на которой мы продемонстрируем передовые технологии, которые мы используем / разработали. Приглашаем вас присоединиться к нам, если вы в городе 😀

Зарегистрируйтесь и забронируйте место! 👇🏻