onCreate — это один из жизненных циклов
Tippy.js, который срабатывает один раз при создании
тултипа. Он позволяет выполнять действия сразу после
инициализации компонента, до того как он будет показан пользователю.
Этот хук полезен для настройки начального состояния тултипа, добавления
кастомной логики или динамического изменения содержимого.
tippy('#myButton', {
content: 'Пример тултипа',
onCreate(instance) {
console.log('Tippy создан', instance);
}
});
instance — объект тултипа, содержащий все свойства и
методы Tippy.js.instanceОбъект instance, передаваемый в onCreate,
включает ключевые свойства и методы:
reference — DOM-элемент, к которому
привязан тултип.
popper — DOM-элемент самого
тултипа.
state — объект состояния тултипа
(visible, enabled и т.д.).
props — объект с настройками
тултипа.
Методы управления:
show() — показать тултип.hide() — скрыть тултип.destroy() — удалить тултип полностью.setProps(newProps) — изменить настройки после
создания.Пример использования instance внутри
onCreate:
tippy('#myButton', {
content: 'Пример',
onCreate(instance) {
if (!instance.props.interactive) {
instance.setProps({ interactive: true });
}
instance.popper.style.border = '2px solid red';
}
});
Здесь мы динамически делаем тултип интерактивным и добавляем красную рамку после его создания.
onCreate
и других хуковTippy.js поддерживает несколько жизненных циклов:
onMount — вызывается при монтировании тултипа в
DOM.onShow — срабатывает перед отображением тултипа.onShown — после появления тултипа.onHide / onHidden — при скрытии
тултипа.В отличие от них, onCreate вызывается
единожды, независимо от того, будет тултип показан или скрыт, и
идеально подходит для инициализации или начальной
конфигурации.
tippy('#dynamicButton', {
onCreate(instance) {
instance.setProps({
content: `Сегодняшняя дата: ${new Date().toLocaleDateString()}`
});
}
});
tippy('#styledButton', {
content: 'Стилизация',
onCreate(instance) {
instance.popper.classList.add('custom-tooltip');
instance.popper.style.padding = '10px';
instance.popper.style.backgroundColor = '#222';
instance.popper.style.color = '#fff';
}
});
tippy('.logButton', {
content: 'Логирование',
onCreate(instance) {
console.log('Создан тултип для элемента:', instance.reference);
}
});
onCreate полезен для единовременных
операций, которые не зависят от показа тултипа.onCreate, так как он выполняется сразу при
инициализации.onShow.instance.setProps() можно безопасно
модифицировать любые параметры тултипа после создания.Если тултип содержит кнопки, формы или другие интерактивные элементы,
onCreate позволяет сразу включить интерактивность:
tippy('#interactiveButton', {
content: '<button>Кликни меня</button>',
allowHTML: true,
interactive: false,
onCreate(instance) {
instance.setProps({ interactive: true });
}
});
delegate и массивами элементовonCreate также поддерживается при делегировании и при
инициализации тултипов на множестве элементов:
tippy('.tooltip', {
content: 'Множественные тултипы',
onCreate(instance) {
console.log('Тултип создан для:', instance.reference);
}
});
Каждый тултип получит отдельный вызов onCreate, что
позволяет индивидуально настраивать элементы.
Хук onCreate в Tippy.js — мощный инструмент для
инициализации, кастомизации и подготовки тултипа к
использованию, обеспечивающий контроль над его поведением ещё
до первого отображения.