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», на которой мы продемонстрируем передовые технологии, которые мы используем / разработали. Приглашаем вас присоединиться к нам, если вы в городе 😀
Зарегистрируйтесь и забронируйте место! 👇🏻