Перейти к основному содержимому

Точки соединения

Зачем нужны точки соединения?

Базовая система реактивности Chorda позволяет настроить взаимодействие с представлением для каждой переменной скоупа потдельности. Но что, если нам нужно связать несколько переменных? Или реализовать загрузку данных с сервера? Т.е. все то, что является сайд-эффектами

Для этого используются точки соединения joints

Логика, объединяющая работу нескольких переменных описывается в блоке joints

export default () => {
return {
joints: {
myJoint: ({a, b}) => {

a.$subscribe((next) => {
b.$value = next + 1
})

}
}
}
}

При смешивании точки соединения с одинаковыми именами перекрываются. Это позволяет подменять блоки логики компонента для изменения его поведения

caution

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

Автоматическая подписка

Все подписки на изменения переменных и на события выполняются автоматически и после удаления комопонента будут так же автоматически отозваны

Асинхронное отключение

Если вы выполняете какие-то подписки, которые не обрабатываются автоматически, их можно отозвать в обработчике отключения

export default () => {
return {
joints: {
myJoint: () => {

const listener = () => {}

window.addEventListener('mousedown', listener)

return () => {
window.removeEventListener('mousedown', listener)
}
}
}
}
}

Откючение можно выполнить асинхронно. Для этого обработчик отключения должен возвращать объект Promise. Если несколько точек подключения являются асинхронными, то полное отключение произойдет после окончания обработки все Promise-ов

Все время отложенного отключения компонент остается в дереве компонентов

Примеры эффектов

Наблюдение за переменными

Загрузка данных

Добавление глобального слушателя событий

Автофокус