Каждый экземпляр tippy обладает своим внутренним
состоянием, которое контролирует поведение тултипа и позволяет управлять
его жизненным циклом после инициализации. Понимание этих свойств
критично для создания сложных интерфейсов с динамическими
подсказками.
Экземпляр Tippy.js возвращает объект с набором ключевых свойств и методов. Среди них наиболее важны:
state.isEnabled – булевое значение,
указывающее, активен ли тултип для взаимодействия. Если
false, тултип не будет реагировать на события пользователя,
такие как mouseenter или click.
const instance = tippy(button, { content: 'Пример' });
console.log(instance.state.isEnabled); // truestate.isVisible – отражает текущее
визуальное состояние тултипа. Значение true появляется в
момент появления тултипа на странице и остаётся до его скрытия.
if (instance.state.isVisible) {
console.log('Тултип отображается');
}state.isDestroyed – определяет, был
ли экземпляр полностью уничтожен методом destroy(). После
вызова destroy() объект больше не реагирует на события, а
его DOM-элементы удаляются.
state.isMounted – указывает,
добавлен ли элемент тултипа в DOM. Позволяет проверять, готов ли тултип
к отображению, прежде чем выполнять операции с его элементами.
Tippy.js предоставляет методы для контроля состояния экземпляра напрямую:
Включение и отключение
enable() – активирует тултип,
возвращает его к нормальной работе.disable() – деактивирует тултип,
игнорируя события пользователя.instance.disable(); // Тултип перестанет показываться
instance.enable(); // Возвращаем функциональностьПоказ и скрытие
show() – принудительное отображение
тултипа, независимо от событий.hide() – скрытие тултипа.toggle() – переключение состояния
видимости.instance.show();
console.log(instance.state.isVisible); // true
instance.hide();
console.log(instance.state.isVisible); // falseУничтожение экземпляра
destroy() – полностью удаляет тултип,
освобождая ресурсы. После вызова всех методов взаимодействия с
экземпляром использовать нельзя.instance.destroy();
console.log(instance.state.isDestroyed); // trueTippy.js генерирует события, которые позволяют реагировать на изменения состояния:
onShow / onHide –
вызываются при показе и скрытии тултипа.onMount / onUntrigger –
события добавления в DOM и снятия триггера.Пример использования:
const instance = tippy(button, {
content: 'Тултип с событиями',
onShow(instance) {
console.log('Тултип показывается, isVisible:', instance.state.isVisible);
},
onHide(instance) {
console.log('Тултип скрыт, isVisible:', instance.state.isVisible);
}
});
props и его связь с состояниемКаждый экземпляр хранит объект props, который содержит
текущие настройки тултипа. Изменение этих свойств напрямую влияет на
поведение:
props.trigger – событие, вызывающее тултип
(mouseenter, click, focus).props.delay – задержка перед показом или скрытием
тултипа.props.interactive – разрешает взаимодействие с
элементами внутри тултипа.Обновление свойств выполняется методом setProps():
instance.setProps({ content: 'Новый контент', delay: 500 });
После вызова setProps состояние экземпляра может
измениться: например, если поменять trigger, тултип
перестанет реагировать на старые события.
Tippy.js поддерживает асинхронное управление состоянием, что позволяет работать с динамическим контентом:
show() возвращает Promise, который
резолвится после полного отображения тултипа.update() позволяет пересчитать позиции и
размеры после изменения содержимого.instance.setContent('Загрузка...');
instance.show().then(() => {
console.log('Тултип полностью показан и готов к взаимодействию');
});
show() или при инициализации с
appendTo: document.body.popperInstance – каждый тултип использует объект
popperInstance, который управляет позиционированием и
автоматически синхронизируется с состоянием isVisible и
isMounted.state.isEnabled перед вызовом
show() предотвращает ошибки при динамическом
включении/выключении тултипов.state.isMounted позволяет безопасно
манипулировать DOM-элементами тултипа.Promise от
show() и hide() гарантирует точное
взаимодействие с контентом и анимациями.destroy() экземпляр больше нельзя использовать;
для повторного применения создаётся новый tippy.Эти возможности делают Tippy.js гибким инструментом для сложных интерфейсов, где требуется точный контроль над состоянием подсказок и их динамическим поведением.