Метод setProps используется для динамического изменения
конфигурации уже созданного экземпляра тултипа (tooltip) в библиотеке
Tippy.js. Он позволяет обновлять свойства тултипа без
необходимости пересоздавать его, что особенно удобно при
изменении поведения подсказки на лету в зависимости от действий
пользователя или состояния интерфейса.
tippyInstance.setProps(newProps);
tippyInstance — объект тултипа,
возвращаемый при инициализации Tippy.js.newProps — объект с новыми параметрами
конфигурации, которые нужно применить.Все свойства, передаваемые в newProps, соответствуют
стандартной конфигурации Tippy.js. Свойства, не указанные в
newProps, остаются без изменений.
const tooltip = tippy('#button', {
content: 'Начальный текст'
});
tooltip.setProps({
content: 'Обновлённый текст'
});
После вызова setProps тултип сразу отображает новый
текст при следующем появлении.
tooltip.setProps({
placement: 'right'
});
Свойство placement может принимать значения
'top', 'bottom', 'left',
'right' и их модификации ('top-start',
'bottom-end' и т.д.). Это позволяет менять направление
тултипа в зависимости от контекста интерфейса.
tooltip.setProps({
trigger: 'mouseenter focus'
});
Свойство trigger определяет события, при которых тултип
отображается. Можно комбинировать несколько событий через пробел,
например, 'click mouseenter'.
tooltip.setProps({
animation: 'scale',
theme: 'light'
});
animation — задаёт эффект появления тултипа
(fade, scale, shift-away и
др.).theme — меняет визуальную тему, если она была
определена через CSS-классы.setProps поддерживает обновление любых параметров,
включая функции:
tooltip.setProps({
onShow(instance) {
console.log('Тултип открылся для элемента:', instance.reference);
},
delay: [100, 500] // задержка появления и скрытия
});
onShow, onHide, onMount,
onDestroy), чтобы менять поведение тултипа в реальном
времени.delay или
duration, что позволяет гибко настраивать анимацию.content в setProps может быть функцией,
возвращающей динамический HTML или текст:
tooltip.setProps({
content: reference => `Текущее время: ${new Date().toLocaleTimeString()}`
});
При каждом открытии тултипа функция будет вычисляться заново, что удобно для отображения актуальной информации.
setProps не пересоздаёт тултип,
поэтому все ранее установленные события и состояние остаются
прежними.setProps применяется к
конкретному экземпляру, а не глобально.tooltips.forEach(t => t.setProps({ theme: 'dark' }));
setProps, заменяют существующие,
а не сливаются. Если нужно сохранить старые значения, их необходимо явно
указать вместе с новыми.window.addEventListener('resize', () => {
tooltip.setProps({
placement: window.innerWidth > 800 ? 'top' : 'bottom'
});
});
button.addEventListener('click', () => {
tooltip.setProps({
content: isActive ? 'Активно' : 'Неактивно'
});
});
const tooltips = tippy('.icon', { theme: 'light' });
tooltips.forEach(t => {
t.setProps({ theme: t.reference.dataset.theme || 'dark' });
});
Метод setProps обеспечивает гибкость и
динамичность работы тултипов, позволяя изменять практически
любую конфигурацию на лету без пересоздания экземпляра. Он идеально
подходит для интерфейсов с изменяющимися данными, адаптивного поведения
и интерактивных компонентов.