Введение

Недавно я начал изучать VueJS, и эта статья является частью серии моих заметок во время его изучения. В этом уроке я расскажу, как использовать циклы для рендеринга контента.

Директива v-for

Отображение списков довольно распространено при создании веб-приложений. Проблема в том, что чаще всего мы не знаем заранее, сколько там предметов. И даже если бы мы это сделали, повторять весь этот контент вручную было бы безумием. Вот почему во Vue есть директива v-for. Вы добавляете его к элементу, передаете ему массив элементов, и он отображает содержимое внутри него для каждого элемента массива.

в-например

Например, давайте отобразим список людей с их именем, фамилией и датой рождения. Поэтому нам нужен этот список в данных приложения.

{
  data() {
    return {
      people: [
        {
          id: 1,
          firstName: "John",
          lastName: "Doe",
          dob: "01-01-1980"
        },
        {
          id: 1,
          firstName: "Johny",
          lastName: "Doe",
          dob: "01-01-1980"
        },
        {
          id: 1,
          firstName: "James",
          lastName: "Doe",
          dob: "01-01-1980"
        }
      ]
    }
  },
  methods: {}
}

Затем, чтобы отобразить его в HTML, достаточно добавить его в директиву v-for.

<ul>
  <li v-for="person in people" >
    <div>{{person.firstName}} {{person.lastName}} - {{person.dob}}</div>
  </li>
</ul>

Использование индекса в цикле

Обычно при циклическом обходе массива используется текущий индекс. И это то, к чему вы можете получить доступ с помощью директивы v-for. В приведенном выше коде вы можете заметить, что я использовал синтаксис person в люди. Помимо person, вторым аргументом, который вы можете использовать, является index.

<li v-for="(person, index) in people" >
  <div>{{index}}. {{person.firstName}} {{person.lastName}} - {{person.dob}}</div>
</li>

Ключевой атрибут

При отображении значений в HTML Vue обновит измененные значения. Однако с массивами это немного сложнее, и вы можете помочь Vue узнать, какие элементы обновляются, чтобы их можно было правильно и эффективно…