Смогут ли Angular Signals заменить NgRx (немного)?
Я много читал о Signals, которые будут выпущены вместе с Angular 16, и уже немного писал для них код. Довольно круто!
Я слышал (и верю), что он, вероятно, заменит почти весь код RxJ, ожидая асинхронных вещей, таких как получение API.
Мой вопрос: разве это не хороший способ управлять состоянием без сторонних инструментов, таких как NgRx? Что ты думаешь?
Я сам работал в обеих упомянутых технологиях
4 ответа
Это не одно и то же:
- NgRx — библиотека управления состоянием.
- Сигналы предназначены для детальной реактивности.
Однако NgRx будет использовать сигналы. На эту тему существует текущий RFC .
Ниже приводится выдержка из официального документа :
Сигналы могут содержать любые значения: от простых примитивов до сложных структур данных .
Если Signals могут содержать сложные структуры данных, к которым также можно легко получить реактивный доступ в любом месте приложения неизменяемым или изменяемым способом, тогда Signals можно использовать как полноценное решение для управления состоянием.
По моему мнению, у Signals есть полный потенциал заменить NgRx в большинстве будущих проектов Angular.
Сигналы никогда не заменят Ngrx, это дополнение.
Для очень простых проектов вы можете обойтись без Ngrx и просто использовать Signals. Но если вы делаете что-то большее, чем небольшой проект, вам следует использовать правильное управление состоянием.
Ngrx может предоставлять селекторы как сигналы, так что вы получите лучшее из обоих миров. Это действительно потрясающе. Теперь у нас есть производственное приложение, созданное с помощью Angular 16.1, это большое автономное приложение, использующее Ngrx/Store и Signals. Это действительно меняет правила игры, и просто удивительно, на что способны Signals и inject().
Я думаю, что он, скорее всего, заменит RxJ (не NgRx), но я не совсем понимаю, какое решение для магазина поставляется с Signals.