В библиотеке Slim.js жизненный цикл компонента
контролируется набором специальных методов, которые позволяют выполнять
действия на разных этапах существования элемента. Три ключевых метода —
slimCreated, slimConnected и
slimDisconnected — обеспечивают полный контроль над
инициализацией, подключением к DOM и очисткой компонента.
slimCreatedМетод slimCreated вызывается один раз
при создании экземпляра компонента. На этом этапе элемент уже
сконструирован, но ещё не добавлен в DOM. Основное назначение метода —
подготовка внутреннего состояния компонента, создание начальных данных и
связывание методов с контекстом.
Особенности slimCreated:
Пример использования:
class MyComponent extends Slim {
static get useShadow() { return true; }
constructor() {
super();
this.count = 0;
}
slimCreated() {
this.items = [];
this.message = "Компонент создан";
}
}
customElements.define('my-component', MyComponent);
В этом примере создаётся массив items и строковое
свойство message. Эти данные будут доступны в дальнейшем в
методах жизненного цикла и шаблоне.
slimConnectedМетод slimConnected вызывается каждый
раз, когда компонент добавляется в DOM. Это момент, когда элемент
становится видимым на странице, и можно безопасно работать с реальными
DOM-узлами и внешними библиотеками.
Особенности slimConnected:
Вызывается каждый раз, когда элемент подключается к дереву DOM.
Доступен полный DOM элемента, включая его Shadow DOM (если используется).
Идеально подходит для:
Пример использования:
slimConnected() {
this.timer = setInterval(() => {
this.count++;
this.update();
}, 1000);
console.log("Компонент подключён к DOM");
}
В этом примере запускается таймер, увеличивающий счётчик каждую секунду. Таймер создаётся только после подключения компонента к DOM, что предотвращает лишние вычисления до момента отображения.
slimDisconnectedМетод slimDisconnected вызывается при
удалении компонента из DOM. Этот этап жизненного цикла важен для
освобождения ресурсов, отписки от событий и остановки процессов, чтобы
предотвратить утечки памяти.
Особенности slimDisconnected:
slimConnected
для симметричного управления ресурсами.Пример использования:
slimDisconnected() {
clearInterval(this.timer);
console.log("Компонент отключён от DOM");
}
Здесь таймер, созданный в slimConnected, останавливается
при удалении элемента. Это предотвращает продолжение выполнения кода для
компонента, который больше не существует на странице.
Жизненный цикл компонента в Slim.js можно представить как последовательность:
slimCreated.slimConnected.slimDisconnected.slimConnected.Пример комплексного использования:
class TimerComponent extends Slim {
static get useShadow() { return true; }
slimCreated() {
this.count = 0;
this.message = "Начало отсчёта";
}
slimConnected() {
this.timer = setInterval(() => {
this.count++;
this.update();
}, 1000);
}
slimDisconnected() {
clearInterval(this.timer);
}
}
customElements.define('timer-component', TimerComponent);
Такой подход обеспечивает:
slimCreated.slimConnected.slimDisconnected.Эти три метода формируют основу управления жизненным циклом в Slim.js и являются ключевыми для создания производительных и надёжных компонентов.