NgRx 22: расширения ресурсов и динамические глубокие сигналы для Angular

NgRx 22: расширения ресурсов и динамические глубокие сигналы для Angular


NgRx, инфраструктура реактивного управления состоянием для Angular, выпустила версию 22, поставляя утилиты для настройки API ресурсов Angular, динамические глубокие сигналы для типов объединения, новый SignalStore помощник по набору текста и совместимость с ESLint v10.

Основным нововведением являются расширения ресурсов, предоставляемые посредством новой экспериментальной версии. @ngrx/signals/resource точка входа. Angular’s resource и httpResource Сброс API value() к undefined при перезагрузке и выбрасывать при чтении в состоянии ошибки. Расширения ресурсов оборачивают существующий ресурс и исправляют только его поведение, сохраняя при этом исходный тип ресурса.

Включены четыре встроенных расширения, а также provideResourceExtensions функция, которая регистрирует значения по умолчанию на уровне приложения, маршрута или компонента. В исходном RFC Марко Станимирович объяснил, что изменение поведения ошибок также является предпосылкой для более глубокого SignalStore интеграция, поскольку «как только ресурс входит в состояние ошибки, любые последующие patchState вызов будет сброшен, потому что он читает value() внутренне».

Предложение было хорошо встречено: Манфред Штайер ответил: «Обожаю!» и предложил сигнал активации, в то время как другой комментатор попросил паритета с сигналом SolidJS createResourceнапример, доступ к текущему значению внутри загрузчика.

В обзоре сообщества по DEV отмечается, что аналогичное поведение можно реализовать с помощью Angular. snapshot() и дополнительную логику состояния, но «с расширениями ресурсов вы остаетесь на самом ресурсе», сохраняя значение доступным для записи и сохраняя более конкретную информацию. httpResource тип.

TanStack Query для Angular предлагает аналогичное сохранение предыдущих данных, когда ключи запроса изменяются с помощью PlaceholderData: KeepPreviousData. Кроме того, пакет инструментов NgRx Toolkit сообщества withResource поддерживает негенерацию неопределенное значение и предыдущее значение; стратегии обработки ошибок для SignalStore, начиная с версии 20.6.0.

Версия 22 также делает глубокие сигналы динамичными. Раньше срез состояния, набранный как объединение (естественный способ моделирования «еще не загружен»), сворачивался в один плоский сигнал. Теперь каждый литерал объекта получает свой собственный DeepSignal, доступный после сужения с помощью проверки.

новый SignalStoreFeatureType Утилита извлекает состояние и элементы фабрики функций, поэтому пользовательские функции могут повторно использовать их в качестве входных типов, а не переобъявлять их вручную. В другом месте, @ngrx/store-devtools получает actionCreators возможность отправки из Redux DevTools и @ngrx/eslint-plugin теперь поддерживает ESLint v10, отказавшись от ESLint v8 и устаревшего формата .eslintrc. Сайт документации также приобрел светлую тематику.

Разработчикам для обновления необходимы Angular 22, TypeScript 6.0 и RxJS ^6.5 или ^7.5, и они могут работать ng update @ngrx/store@22или ng update @ngrx/signals@22 для проектов только для SignalStore. Для большинства критических изменений предусмотрена автоматическая миграция, подробно описанная в руководстве по миграции на версию 22 и журнале изменений. Командам также следует принять во внимание, что в Angular 22 изменилось время использования ресурсов: один из разработчиков сообщил о неудачных тестах, которые впоследствии были добавлены в примечания к выпуску Angular как критические изменения.

В теме Hacker News об Angular v22 один пользователь написал:

NGRX Signals — это новый подход, и он прекрасен. Вместо пяти файлов для подключения состояния обычно используется один файл и все/большая часть функций размещаются вместе.

Хотя другой заметил, что:

Современный Angular НАМНОГО приятнее в использовании, чем времена версии 2 (или даже дни версии 4, когда я впервые начал с ним работать). Многие необходимые шаблоны в настоящее время не нужны. И даже RxJS и NgRX становятся все менее и менее необходимыми в использовании, и это здорово.

NgRx — это управляемая сообществом платформа с открытым исходным кодом для создания реактивных приложений Angular, обеспечивающая глобальное управление состоянием с помощью Store и эффектов наряду с SignalStore на основе сигналов. Его спонсируют Nx и CodeRabbit, а его исходный код доступен на GitHub.





Source link

Leave a Reply

Your email address will not be published. Required fields are marked *