@choupa
Архитектор (обычный, который строит)

Как избавиться от мелькания при загрузке элементов, скрытых с помощью v-if?

Есть несколько div, которые изначально скрыты примерно так:

<div v-if="(on)">
где переменная on=false с самого начала:
Vue ({
    data: on=false
});


При этом при загрузке страницы этот элемент div на которое врем виден на экране. Я конечно могу его в CSS сделать сначала display:none, а потом уже "расчехлить", но не хочется усложнять. Да и хочу понять причину, почему сейчас плохо работает.
  • Вопрос задан
  • 775 просмотров
Решения вопроса 2
Ni55aN
@Ni55aN
Шаблон должен быть не в .html (который загружается раньше, чем инициализируется Vue), а в template свойстве создаваемого компонента

Vue.component('comp', {
template: '...'
});


который вызывается в render экземпляра Vue
new Vue({
el: '#app'
});


.html
<div id="app"><comp></comp></div>
Ответ написан
@hopeful_romantic
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@deliro
Во-первых, если элемент скорее всего будет виден на странице рано или поздно — его лучше скрыть v-show, это легче, чем перестраивать DOM;
Во-вторых, если он мелькает — значит флаг его показа часто меняется;
В-третьих, можно использовать transition/transition-group, чтобы он не "мелькал".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы