Задать вопрос
@DPS_ninja

Как сделать правильно v-if при v-for во vue?

Я хотел бы сделать условие, допустим когда имя Tom или Misha, то добавлять ему допустим цифру 9. Чтобы получался список, но при моём условие было Tom 9, Alex, Vasya, Misha 9. Как это можно реализовать? так же читал, что v-for нельзя использовать с v-if
Пример:
https://codepen.io/Unknown322/pen/zYOVMPw
  • Вопрос задан
  • 2281 просмотр
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skypro
    React-разработчик с нуля
    9 месяцев
    Далее
  • Skypro
    JavaScript-разработчик с нуля
    9 месяцев
    Далее
  • Skypro
    Frontend-разработчик с нуля
    9 месяцев
    Далее
Решения вопроса 2
bingo347
@bingo347
Crazy on performance...
так же читал, что v-for нельзя использовать с v-if
не рекомендуется не значит нельзя, рекомендуется делать .filter на массиве, а уже по отфильтрованному массиву делать v-for и связано это с тем, что vue может закэшировать отфильтрованный массив и пересчитывать циклы только при изменении самого массива, но не реагировать на изменение элементов в нем.

по сабжу:
<li v-for="user in users"
    :key="user"
>
    <p>Имя: {{ user }}{{ user === 'Tom' || user === 'Misha' ? ' 9' : '' }}</p>
</li>
Ответ написан
Kozack
@Kozack Куратор тега Vue.js
Thinking about a11y
Использовать v-for с v-if можно, но не рекомендуется.
При их сочетании условие применяется к каждой итерации.
<div v-for="i in index" v-if="index > 10">
Аналог
for(let i in index) {
    if (i > 10) { /* ... */ }
}


Прочитайте Это и Это

А конкретно в вашем примере достаточно сделать вот так:
<p>Имя: {{ user }}{{user === 'Tom' || user === 'Misha' ? 9 : ''}}</p>

Или отдельным елементом:
<p>Имя: {{ user }} <span v-if="user === 'Tom' || user === 'Misha'">9</span></p>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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