Перейти к содержимому
103 / 112

Как реализовать паттерн Mediator для коммуникации компонентов?

Mediator -- посредник, через которого компоненты общаются, не зная друг о друге. В Vue это может быть provide/inject composable, через который дочерние компоненты регистрируются и координируются.

JavaScript
// Медиатор формы -- координирует поля
const formMediator = {
  fields: new Map(),
  register(name, field) { this.fields.set(name, field) },
  validateAll() {
    return [...this.fields.values()].every(f => f.validate())
  },
  getValues() {
    return Object.fromEntries([...this.fields].map(([k, v]) => [k, v.value]))
  }
}

Как реализовать паттерн Mediator для коммуникации компонентов? | JScriptiser