Используйте onRender
, если вам нужен элемент в DOM перед выполнением обработчика.
Пример:
var el = document.createElement('DIV');
el.style = 'height: 10px';
// logs 0
console.log(el.clientHeight);
document.body.appendChild(el);
// logs 10
console.log(el.clientHeight);
clientHeight
возвращает высоту элемента в DOM. Он не вычисляет высоту элемента, если он еще не находится в DOM. Есть много свойств и функций для HTML элементов, для которых это актуально.
Используйте init
, когда вы хотите, чтобы ваш хук выполнялся, как только компонент инициализируется, не дожидаясь рендеринга.
Это может быть полезно для настройки прослушивателей событий. Если вы настроили прослушиватели событий в onRender
, то любые события, которые запускаются после init
и до onRender
, не будут перехвачены.
Если код в вашем хуке не нужно вызывать как только компонент инициализирован и не зависит от элемента, находящегося в DOM, то на самом деле не имеет значения, какой вы выберете. В большинстве случаев эти события будут разделены на миллисекунды.
Я обычно склоняюсь к init
, поэтому ловушка выполняется как можно скорее и не дожидается, если есть проблема с рендерингом.