В Quasar Framework хуки представляют собой
специальные функции, которые позволяют интегрировать собственную логику
в жизненный цикл компонентов или приложения. Работа с хуками требует
понимания точек подключения и правильного использования методов
install и uninstall.
Хук — это объект или функция, которая может регистрироваться в приложении или компоненте и выполнять действия на определённые события. В Quasar хуки обычно используются для:
Хук может быть глобальным (действовать на всё приложение) или локальным (действовать только на конкретный компонент).
installМетод install отвечает за подключение хука и активацию
его логики. Он вызывается один раз при регистрации и может использовать
параметры для конфигурации.
Пример структуры хука:
export default {
name: 'exampleHook',
install(app, options) {
// Подключение логики
app.config.globalProperties.$example = () => {
console.log('Хук установлен');
}
// Реакция на события жизненного цикла компонента
app.mixin({
mounted() {
console.log('Компонент смонтирован');
}
});
}
}
Ключевые моменты метода install:
app и опциональные параметры
options.app.use().uninstallМетод uninstall используется для удаления хука,
освобождения ресурсов и отключения ранее зарегистрированных функций или
обработчиков. Он особенно важен для динамических модулей, которые
подключаются и отключаются в процессе работы приложения.
Пример метода uninstall:
export default {
name: 'exampleHook',
uninstall(app) {
// Удаление глобальных свойств
delete app.config.globalProperties.$example;
// Удаление миксинов или подписок
// Важно хранить ссылки на добавленные обработчики для корректного удаления
}
}
Особенности использования
uninstall:
Для подключения хука используется метод app.use():
import exampleHook from './exampleHook'
const app = createApp(App)
app.use(exampleHook, { option1: true })
Для удаления хука требуется реализовать отдельную логику, так как
Quasar не предоставляет встроенного метода app.unuse().
Удаление обычно выполняется через вызов метода uninstall
внутри вашего хука:
exampleHook.uninstall(app)
export default {
install(app) {
const handleClick = () => console.log('Клик зафиксирован')
window.addEventListener('click', handleClick)
app.config.globalProperties.$removeTracker = () => {
window.removeEventListener('click', handleClick)
}
},
uninstall(app) {
app.config.globalProperties.$removeTracker()
}
}
export default {
install(app, { theme }) {
app.config.globalProperties.$setTheme = () => {
document.body.setAttribute('data-theme', theme)
}
app.config.globalProperties.$setTheme()
},
uninstall(app) {
document.body.removeAttribute('data-theme')
}
}
app.config.globalProperties для глобальных
функций и данных.Методы install и uninstall в Quasar
позволяют создавать гибкую, управляемую архитектуру расширений,
обеспечивая корректное подключение и безопасное отключение
функциональности без утечек ресурсов.