⊗jsvuPmCmRR 68 of 72 menu

Reaktivno uklanjanje komponenti u Vue

Naučimo kako da reaktivno uklanjamo podređene komponente sa liste. Napravićemo u svakoj podređenoj komponenti posebno dugme. Klikom na ovo dugme biće emitovan događaj i u roditeljskoj komponenti će biti uklonjena određena podređena komponenta po njenom id.

Prionimo na realizaciju. Neka u roditeljskoj komponenti bude sledeći niz objekata:

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

Napišimo u roditeljskoj komponenti metod za uklanjanje korisnika po njegovom id:

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

Kreirajmo komponente u petlji, prosledivši im kao parametar ime, prezime, id i metod za uklanjanje:

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

Definišimo ulazne podatke u opciji props i emitovani događaj u opciji emits:

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

Prikažimo u prikazu komponente ime i prezime korisnika:

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

A sada napravimo dugme, čijim klikom će biti emitovan događaj za uklanjanje. Parametrom ovog događaja će biti prosleđivan id komponente. Roditeljska komponenta pri primanju događaja će ukloniti datog korisnika iz niza objekata i on će reaktivno nestati sa liste korisnika.

Dakle, realizujmo ovo dugme:

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

Prikažite u petlji komponente Employee. Napravite u svakoj komponenti dugme za njeno uklanjanje.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij