HM-62. Исправление бага при переходе между страницами (#28)
This commit is contained in:
@ -12,6 +12,12 @@ class Component extends EmitService {
|
||||
*/
|
||||
_listeners;
|
||||
|
||||
/**
|
||||
* Отображает текущее состояние компонента жив он или мертв
|
||||
* @type {Boolean} - текущее состояние компонента
|
||||
*/
|
||||
_isAlive;
|
||||
|
||||
/**
|
||||
* Корневой элемент компонента
|
||||
* @type {Node} - корневой элемент компонента
|
||||
@ -31,6 +37,7 @@ class Component extends EmitService {
|
||||
}
|
||||
this._listeners = [];
|
||||
this._events = {};
|
||||
this._isAlive = true;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -51,16 +58,28 @@ class Component extends EmitService {
|
||||
this._listeners.forEach(({element, eventName, listener}) => {
|
||||
element.removeEventListener(eventName, listener);
|
||||
});
|
||||
this._listeners = [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Позволяет запускать рендер только в том случае, если компонент жив
|
||||
* @param {Function} renderFunction - функция рендера
|
||||
*/
|
||||
render (renderFunction) {
|
||||
if (this._isAlive) {
|
||||
renderFunction();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Метод уничтожения компонента. Удаляет элемент из верстки, снимает обработчики и очищает подписки
|
||||
*/
|
||||
destroy = () => {
|
||||
this._isAlive = false;
|
||||
this.clearListeners();
|
||||
this.mainNode.remove();
|
||||
this._listeners = [];
|
||||
this.clearSubscribes();
|
||||
this.clearEvents();
|
||||
this.mainNode.remove();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user