v-для

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

Когда вы повторяете массив, «(элемент, индекс) в элементах» предоставляет index в качестве фактического индекса элемента в массиве. А в объектных сценариях вы можете использовать «(значение, ключ, индекс) в объекте» для доступа к ключу каждого свойства.

Вы должны обратить внимание, что Vue ввел политику «заплаты на месте» во время рендеринга элемента. Это означает, что если вы изменили порядок элементов в массиве, Vue не будет повторно отображать весь список, а обновит все, что изменилось из-за измененного массива. Это очень быстро, но иногда может вызвать побочные эффекты.

Чтобы позволить Vue отслеживать фактический порядок элементов без политики «исправления на месте», вы должны предоставить директиву :key, чтобы явно указать Vue сделать это. Директива :key не будет отображаться в атрибуте key в отображаемом содержимом, потому что это просто трассировка для Vue для отслеживания порядка элементов.

Обнаружение изменения массива

Вы когда-нибудь задумывались, как именно Vue, а также другие прогрессивные фреймворки JavaScript реализуют свои собственные реактивные системы? Здесь мы хотели бы поговорить о небольшом аспекте реактивной системы — обнаружении изменений массива.

Согласно документу Vue, существует несколько методов мутации, обернутых Vue.

  • толкать()
  • поп()
  • сдвиг()
  • отменить сдвиг ()
  • соединение ()
  • Сортировать()
  • обеспечить регресс()

Почему Vue оборачивает эти методы? Вернемся к примерам, данным Vue. Вы заметили, что каждый раз, когда вы добавляете новые элементы в массив, HTML DOM также обновляется? Чтобы выполнять функции рендеринга, Vue должен получать уведомления о соответствующих изменениях элементов массива. Если вы просмотрели исходный код Vue js, вы обнаружите, что Vue обернул эти методы, перезаписав исходные методы прототипа (только описанные выше методы).

Итак, у вас выявлена ​​нехватка обнаружения изменения массива. Если вы хотите обновить массив, определенный в базовых данных, используйте Vue.set(array, indexToChange, newValue).

Энтони Гор поделился своим Средним [реактивность в Vue.js (и его подводные камни)]. Это действительно стоит прочитать.

Что касается неизменяющих методов, таких как filter(), concat() и slice(), лучше всего заменить исходный массив с новым. Поскольку эти неизменяющие методы не запускают обновления в Vue, эффективно заменить исходный массив результатом этих методов.

Если вам нужно, возможно, иногда, изменить длину массива, определенного в данных Vue, вместо этого используйте splice().

Обнаружение изменения объекта

Энтони также упомянул, что если мы назначим новое свойство существующему объекту, это не вызовет обновления Vue. Есть два способа справиться с этим вопросом.

  1. Используйте Vue.set(object, propertyName, value).
  2. Замените старый объект полностью новым. Взгляните на официальный пример Vue:

v-для диапазона

Когда мы используем v-for, аргумент после «in» может быть целым числом. Таким образом, Vue будет повторять содержимое несколько раз.

Если вам нравится мой контент, хлопайте в ладоши и подписывайтесь на меня. Проверьте мой оригинальный контент на devchache.com.