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]))
}
}