Quasar Plugins: Notify, Dialog, Loading, LocalStorage
↑ 5.3 Quasar · ← Предыдущая · → Следующая
Зачем это на собесе
Императивные API Quasar: уведомления, диалоги, лоадеры — как использовать и тестировать.
Объяснение
Плагины включаются в quasar.config → framework.plugins и вызываются через useQuasar() или напрямую.
import { useQuasar, Notify, Dialog, Loading, LocalStorage, SessionStorage, Cookies, Dark, Screen, Meta, copyToClipboard, date } from "quasar";
const $q = useQuasar();
$q.notify({ type: "positive", message: "Сохранено", position: "top-right", timeout: 3000, actions: [{ label: "Отмена", handler: undo }] });
$q.dialog({ title: "Удалить?", message: "Действие необратимо", cancel: true, persistent: true, ok: { color: "negative", label: "Удалить" } })
.onOk(() => remove()).onCancel(() => {}).onDismiss(() => {});
// prompt / options: $q.dialog({ prompt: { model: "", type: "text" } }); свой компонент: $q.dialog({ component: MyDialog, componentProps: { id } })
$q.loading.show({ message: "Загрузка..." }); $q.loading.hide(); // глобальный лоадер
$q.loadingBar.start(); $q.loadingBar.stop(); // полоса сверху (LoadingBar)
LocalStorage.set("prefs", { a: 1 }); LocalStorage.getItem("prefs"); // сериализация типов (Date, RegExp и др.)
Cookies.set("k", "v", { expires: 7, secure: true, sameSite: "Lax" });
$q.dark.set("auto"); $q.screen.gt.sm; $q.platform.is.mobile;| Плагин | Назначение |
|---|---|
Notify | всплывающие уведомления |
Dialog | программные диалоги (alert/confirm/prompt/свой компонент) |
Loading, LoadingBar | оверлей и прогресс-бар |
LocalStorage, SessionStorage, Cookies | хранилища |
Dark, Screen, Platform | тема, размеры экрана, платформа |
Meta | управление <title> и meta |
AppFullscreen, AddressbarColor, BottomSheet, Bex | прочее |
Обёртка над уведомлениями:
export function useNotify() {
const $q = useQuasar();
return { ok: (m: string) => $q.notify({ type: "positive", message: m }), fail: (e: unknown) => $q.notify({ type: "negative", message: toMessage(e) }) };
}Интеграция: глобальный обработчик ошибок HTTP показывает notify; Loading — на долгие операции; Dialog — подтверждения.
Нюансы и подводные камни
- Плагин нужно объявить в конфиге, иначе
$q.notifyне сработает. - В тестах плагины нужно подключать (
installQuasarPlugin) или мокатьuseQuasar. - Не показывайте
Loadingповерх всего экрана на быстрых операциях (мерцание): используйте задержку. - Много одновременных уведомлений — группируйте (
group). - LocalStorage плагин безопасен для сериализации, но не для секретов.
Практика
- Сделайте composable
useNotifyи подключите к обработчику ошибок API. - Реализуйте подтверждение удаления через
$q.dialog. - Покройте компонент тестом с
installQuasarPlugin.
Вопросы с ответами
Как вызвать уведомление в Quasar?
$q.notify({...})черезuseQuasar()при включённом плагинеNotify.
Чем
Dialogплагин отличается от<q-dialog>?Плагин создаёт диалог императивно из кода, компонент — декларативно в шаблоне.