⊗jsvuPmLpKA 34 of 72 menu

Атрибут key във Vue

При актуализиране на списък с елементи от Vue, рендерирани от директивата v-for, по подразбиране се използва стратегия за актуализиране "на място". Ако редът на елементите в масива или обекта се промени, Vue няма да премества елементите в DOM, а просто ще актуализира всеки елемент "на място", за да показва новите данни на съответния индекс.

За да подскажете на Vue как да определя идентичността на всеки елемент, и по този начин да използва повторно и подрежда съществуващите елементи, е необходимо да се посочи уникален атрибут key за всеки елемент.

Без ключове Vue използва алгоритъм, който минимизира преместването на елементи и ще се опитва максимално да променя/използва повторно елементи от един и същ тип. При използване на ключове, елементите ще се пренареждат в съответствие с промяната в последователността на ключовете, а елементи, чиито ключове вече липсват, ще винаги се премахват/унищожават.

Препоръчително е винаги да се указва атрибут key с v-for, освен в случаите, когато съдържанието, което се итерира в DOM, е просто, или когато съзнателно разчитате на стратегията за актуализиране по подразбиране за подобряване на производителността.

Обикновено въпросът за добавяне на ключове възниква при итерация на масив от обекти. В този случай един от ключовете на обекта е уникално поле, например id:

data() { return { users: [ { id: 1, name: 'name1', surn: 'surn1', }, { id: 2, name: 'name2', surn: 'surn2', }, { id: 3, name: 'name3', surn: 'surn3', }, ] } }

Нека да итерираме дадения масив с цикъл, като посочим съответните ключове:

<template> <p v-for="user in users" :key="user.id"> {{ user.name }} {{ user.surn }} </p> </template>

Итерирайте следния масив с цикъл и изведете имената на продуктите под формата на списък ul:

data() { return { products: [ { id: 1, name: 'product1', }, { id: 2, name: 'product2', }, { id: 3, name: 'product3', }, ] } }
Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне