HM-62. Исправление бага при переходе между страницами (#28)

This commit is contained in:
Nikolay
2020-07-24 14:28:20 +03:00
committed by GitHub
parent 7a1e9f1a49
commit 3e7134045d
7 changed files with 112 additions and 64 deletions

View File

@ -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();
}
}