Oba warunkowo wyświetlają element, ale robią to w różny sposób — v-if dodaje/usuwa element z DOM; v-show trzyma go w DOM i przełącza jego CSS display.
vue
<template>
<p v-if="isVisible">Rendered only when true (removed from DOM when false)</p>
<p v-show="isVisible">Always in the DOM; just display:none when false</p>
</template>
