> В чем разница v-if и v-show во Vue (Vue.js)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Библио-Глобус
Стек: Vue.js
> Пример ответа
Основное различие между v-if и v-show в Vue.js заключается в механизме управления отображением элементов.
-
v-if- это условный рендеринг. Элемент создаётся или уничтожается в DOM в зависимости от истинности выражения. Если условие ложно, элемент полностью удаляется из DOM-дерева (и все его дочерние компоненты уничтожаются). При изменении условия на истинное - элемент создаётся заново. Это дороже при частых переключениях, но экономит память, когда элемент редко показывается. -
v-show- это управление видимостью через CSS-свойствоdisplay. Элемент всегда присутствует в DOM, но скрывается с помощьюdisplay: none. Переключение происходит мгновенно и дешево, так как не требует пересоздания компонентов. Однако элемент остаётся в DOM, что может влиять на производительность при большом количестве скрытых элементов.
Практические рекомендации:
-
Используйте
v-if, если условие меняется редко (например, при загрузке данных или переключении вкладок с тяжёлыми компонентами). -
Используйте
v-show, если требуется частое переключение видимости (например, анимации, выпадающие списки, тултипы).
Пример:
<template> <div> <p v-if="isLogged">Добро пожаловать!</p> <!-- Удаляется из DOM при isLogged = false --> <p v-show="isVisible">Этот текст всегда в DOM</p> <!-- Просто скрывается --> </div> </template>
> Похожие задачи по frontend
Для чего нужен provide/inject во Vue
Для чего нужен defineExpose во Vue 3
Для чего используется teleport во Vue 3
Какие хуки или composables используются для работы с API во Vue 3
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью