Директива v-show в Vue

Ещё одним вариантом условного отображения является директива v-show. Используется очень похоже:

<template>
	<p v-show="isAuth">
		+++
	</p>
</template>

Отличия в том, что элемент с v-show будет всегда отрисовываться и оставаться в DOM, а переключаться будет лишь его CSS свойство display.

Директива v-if выполняет "настоящую" условную отрисовку, так как гарантирует, что слушатели событий и дочерние компоненты внутри блока должным образом уничтожаются и воссоздаются при переключениях условия.

Директива v-if также ленивая: если условие ложно на момент первоначальной отрисовки, то она ничего не сделает - условный блок не будет отрисован до тех пор, пока условие не станет истинным.

Для сравнения, v-show намного проще - элемент всегда отрисовывается, вне зависимости от исходного состояния с переключением на основе CSS.

В целом, у v-if выше затраты на переключение, в то время как v-show имеет больше затрат на первичную отрисовку. Так что используйте v-show, если переключения будут частыми, и предпочитайте v-if, если условие может и не измениться во время исполнения.

Директиву v-show нельзя использовать на элементе template и она не работает с v-else.

Дан абзац и кнопка. Сделайте так, чтобы абзац тогглился по нажатию на кнопку.

Расскажите, в чем отличия директив v-show и v-if.

Расскажите, когда лучше использовать директиву v-show, а когда - v-if.

Расскажите, какие ограничения имеет директива v-show.



Чат с GPT Компилятор