SkateJS предоставляет мощный механизм управления жизненным циклом компонентов через встроенные хуки. Эти хуки позволяют выполнять код на различных этапах существования компонента — от его создания до удаления из DOM, а также при изменении свойств или атрибутов.
connected и
disconnectedconnected вызывается каждый раз, когда
элемент присоединяется к DOM. Этот хук идеально подходит для:
import { define, Component } from 'skatejs';
class MyElement extends Component {
connected() {
console.log('Элемент добавлен в DOM');
}
}
define('my-element', MyElement);
disconnected вызывается при удалении
элемента из DOM. В этом хукe рекомендуется:
disconnected() {
console.log('Элемент удален из DOM');
}
prop и propsSkateJS поддерживает реактивные свойства компонентов через объект
props, а также отдельный хук
prop для отслеживания изменений
конкретного свойства.
static get props() {
return {
count: Number
};
}
prop({ count: { attribute: true } }) {
console.log('Свойство count изменилось');
}
Особенности:
attribute: true.render.prop позволяет реагировать только на конкретное
изменение свойства, а не на все изменения компонента.renderХук render отвечает за генерацию
HTML-структуры компонента. SkateJS поддерживает использование шаблонных
строк и JSX-подобного синтаксиса через интеграцию с preact
или lit-html.
render() {
return `<div>Счет: ${this.count}</div>`;
}
Особенности рендеринга:
render.render вызывается не только при изменении свойства,
но и при ручном вызове this.update().attributeChangedДля прямого взаимодействия с атрибутами DOM используется хук
attributeChanged. Он вызывается при
изменении атрибута, указанного в observedAttributes.
static get observedAttributes() {
return ['data-status'];
}
attributeChanged(name, oldValue, newValue) {
console.log(`${name} изменен с ${oldValue} на ${newValue}`);
}
Особенности:
errorХук error обеспечивает централизованную
обработку исключений внутри компонента.
error(err) {
console.error('Ошибка в компоненте:', err);
}
Особенности:
updateХук update вызывается перед
ререндерингом компонента при изменении свойств или атрибутов. Его задача
— подготовить состояние перед визуальным обновлением.
update({ oldProps, newProps }) {
if (oldProps.count !== newProps.count) {
console.log('Счет обновился');
}
}
Особенности:
oldProps и newProps для
сравнения.shouldUpdate позволяет полностью
контролировать процесс перерисовки.Встроенные хуки SkateJS работают синхронно и последовательно:
connected — элемент добавлен в DOM.update — подготовка к ререндерингу.render — генерация нового DOM.prop / attributeChanged — обработка
изменения свойств и атрибутов.disconnected — элемент удален из DOM.error — отлов исключений, возникших на любом
этапе.Эта последовательность позволяет точно управлять состоянием компонента и реагировать на изменения как на уровне DOM, так и на уровне логики приложения.
connected для инициализации, а
disconnected для очистки ресурсов.prop и attributeChanged для
реактивного взаимодействия с внешними данными.update перед сложными операциями обновления
DOM, чтобы минимизировать лишние рендеры.error, чтобы компоненты
оставались стабильными при исключениях.Эти встроенные хуки формируют основу архитектуры компонентов в SkateJS и позволяют создавать масштабируемые, поддерживаемые и реактивные веб-компоненты.