В Petite-Vue, как и в Vue.js, условный рендеринг позволяет
динамически изменять отображаемые элементы в зависимости от состояния
данных. Основные директивы для этих целей — v-if,
v-else-if и v-else. Они работают совместно,
образуя цепочки условий, которые управляют тем, какой блок HTML будет
выведен на страницу.
v-ifv-if является основной директивой условного рендеринга.
Она полностью контролирует наличие элемента в DOM: элемент создается
только при истинности выражения и удаляется, если оно ложно.
Пример:
<div v-if="isLoggedIn">
Пользователь авторизован
</div>
Если значение isLoggedIn истинно, блок
<div> появляется в DOM. Если ложно, блок
отсутствует.
Ключевой момент: v-if не просто
скрывает элемент через CSS, он полностью управляет его созданием и
удалением из DOM.
v-elsev-else используется в связке с v-if и
отображается только тогда, когда условие v-if ложно. Она не
принимает выражений — привязка всегда к предыдущему
v-if.
Пример:
<div v-if="isLoggedIn">
Пользователь авторизован
</div>
<div v-else>
Пользователь не авторизован
</div>
В этом случае, если isLoggedIn ложь, появляется блок с
сообщением о неавторизованном пользователе.
Особенности v-else:
v-if или
v-else-if.v-else-ifv-else-if позволяет проверять дополнительные условия в
цепочке, создавая конструкцию «if-else if-else». Она получает выражение
и срабатывает только тогда, когда все предыдущие условия ложны.
Пример:
<div v-if="status === 'loading'">
Загрузка...
</div>
<div v-else-if="status === 'success'">
Данные успешно загружены
</div>
<div v-else-if="status === 'error'">
Произошла ошибка
</div>
<div v-else>
Нет информации о состоянии
</div>
Важные нюансы:
v-else-if проверяет выражение только если все
предыдущие v-if и v-else-if ложны.v-else-if
подряд.v-else для обработки всех
остальных случаев.Цепочка v-if → v-else-if →
v-else выполняется по принципу сверху вниз:
v-if. Если истинно — рендерится
соответствующий блок, остальные игнорируются.v-if ложь, проверяются v-else-if по
очереди.v-else (если он
присутствует).Такой подход позволяет создавать сложные условные шаблоны без дублирования кода и управлять DOM максимально эффективно.
v-if, v-else-if и v-else
работают не только с обычными HTML-элементами, но и с компонентами
Petite-Vue. Это особенно полезно для динамической подгрузки интерфейса в
зависимости от состояния.
<loading-spinner v-if="status === 'loading'"></loading-spinner>
<success-message v-else-if="status === 'success'"></success-message>
<error-message v-else></error-message>
Особенность: при переключении условий предыдущий компонент удаляется из DOM, а новый создается заново. Это важно учитывать при работе с состояниями внутри компонентов.
v-if могут усложнить чтение кода. Использование
v-else-if часто делает логику более прозрачной.computed) для упрощения шаблона.Цепочки v-if, v-else-if и
v-else являются фундаментом условного рендеринга в
Petite-Vue. Они позволяют создавать динамический, адаптивный интерфейс с
минимальной нагрузкой на DOM и обеспечивают чистоту и читаемость кода
при работе с различными состояниями данных.