Sobes.tech
Назад к вопросам
Middle
4

Что такое фасад в NgRx, какую роль выполнял?

Компании, где спрашивали
BLS-Soft

Ответ от нейросети

sobes.tech AI

Фасад в NgRx — это паттерн, который служит абстракцией над store, селекторами и экшенами. Его роль — упростить взаимодействие компонентов с состоянием, скрыть детали реализации и централизовать логику работы с состоянием.

Вместо того чтобы в каждом компоненте напрямую подписываться на селекторы и диспатчить экшены, фасад предоставляет методы и свойства, которые инкапсулируют эти операции. Это улучшает читаемость кода, облегчает тестирование и поддержку.

Пример фасада:

@Injectable({ providedIn: 'root' })
export class CounterFacade {
  count$ = this.store.select(selectCount);

  constructor(private store: Store) {}

  increment() {
    this.store.dispatch(increment());
  }

  decrement() {
    this.store.dispatch(decrement());
  }

  reset() {
    this.store.dispatch(reset());
  }
}

Компонент использует фасад так:

@Component({ ... })
export class CounterComponent {
  count$ = this.counterFacade.count$;

  constructor(private counterFacade: CounterFacade) {}

  onIncrement() {
    this.counterFacade.increment();
  }

  onDecrement() {
    this.counterFacade.decrement();
  }

  onReset() {
    this.counterFacade.reset();
  }
}