⊗jsvuPmCmRR 68 of 72 menu

Reaktívne odstraňovanie komponentov vo Vue

Naučme sa reaktívne odstraňovať podradené komponenty zo zoznamu. Urobme na to v každom podradenom komponente špeciálne tlačidlo. Kliknutím na toto tlačidlo bude vyvolaná udalosť a v nadradenom komponente bude odstránený daný podradený komponent podľa jeho id.

Poďme na implementáciu. Nech v nadradenom komponente je nasledujúce pole objektov:

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

Napíšme v nadradenom komponente metódu na odstránenie používateľa podľa jeho id:

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

Vytvorme komponenty v cykle, pričom im odovzdáme parametrom meno, priezvisko, id a metódu na odstránenie:

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

Zadefinujme prichádzajúce dáta v nastavení props a vyvolávanú udalosť v nastavení emits:

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

Vypíšme v prezentácii komponentu meno a priezvisko používateľa:

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

A teraz urobme tlačidlo, ktorého kliknutím bude vyvolaná udalosť na odstránenie. Parametrom tejto udalosti bude odovzdávané id komponentu. Nadradený komponent pri prijatí udalosti odstráni daného používateľa z poľa objektov a ten reaktívne zmizne zo zoznamu používateľov.

Takže, implementujme toto tlačidlo:

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

Vypíšte v cykle komponenty Employee. Urobte v každom komponente tlačidlo na jeho odstránenie.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť