Точки соединения
Зачем нужны точки соединения?
Базовая система реактивности 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-ов
Все время отложенного отключения компонент остается в дереве компонентов