⊗jsvuPmCmRR 68 of 72 menu

Reaktivní odstraňování komponent ve Vue

Naučme se reaktivně odstraňovat podřízené komponenty ze seznamu. Vytvořme pro to v každé podřízené komponentě speciální tlačítko. Po kliknutí na toto tlačítko bude vyslána událost a v nadřazené komponentě bude odstraněna daná podřízená komponenta podle jejího id.

Pojďme k implementaci. Nechť v nadřazené komponentě je následující pole objektů:

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

Napišme v nadřazené komponentě metodu pro odstranění uživatele podle jeho id:

methods: { remove(id) { this.users = this.users.filter((user) => { return user.id !== id; }) } }

Vytvořme komponenty v cyklu, předáním jm parametr jméno, příjmení, id a metodu pro odstranění:

<template> <User v-for ="user in users" :id ="user.id" :name ="user.name" :surn ="user.surn" @remove ="remove" :key ="user.id" /> </template>

Definujme vstupní data v nastavení props a vysílanou událost v nastavení emits:

props: { id: Number, name: String, surn: String, }, emits: ['remove'],

Vypišme v šabloně komponenty jméno a příjmení uživatele:

<template> {{ name }} {{ surn }} </template>

A nyní vytvořme tlačítko, po kliknutí na které bude vyslána událost pro odstranění. Parametrem této události bude předáno id komponenty. Nadřazená komponenta po obdržení události odstraní daného uživatele z pole objektů a ten reaktivně zmizí ze seznamu uživatelů.

Takže, implementujme toto tlačítko:

<template> {{ name }} {{ surn }} <button @click="$emit('remove', id)"> remove </button> </template>

Vypište v cyklu komponenty Employee. V každé komponentě vytvořte tlačítko pro její odstranění.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout