⊗jsvuPmCmRR 68 of 72 menu

Reaktywne usuwanie komponentów w Vue

Nauczmy się reaktywnie usuwać komponenty potomne z listy. W tym celu zróbmy w każdym komponencie potomnym specjalny przycisk. Po kliknięciu na ten przycisk będzie emitowane zdarzenie i w komponencie nadrzędnym będzie usuwany określony komponent potomny po jego id.

Przystąpmy do realizacji. Niech w komponencie nadrzędnym będzie następująca tablica obiektów:

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

Napiszmy w komponencie nadrzędnym metodę usuwania użytkownika po jego id:

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

Stwórzmy komponenty w pętli, przekazując im parametrem imię, nazwisko, id i metodę do usuwania:

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

Zadeklarujmy dane wejściowe w opcji props i emitowane zdarzenie w opcji emits:

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

Wyświetlmy w szablonie komponentu imię i nazwisko użytkownika:

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

A teraz zróbmy przycisk, po kliknięciu którego będzie emitowane zdarzenie do usuwania. Parametrem tego zdarzenia będzie przekazywany id komponentu. Komponent nadrzędny po otrzymaniu zdarzenia usunie danego użytkownika z tablicy obiektów i on reaktywnie zniknie z listy użytkowników.

Zaimplementujmy ten przycisk:

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

Wyświetl w pętli komponenty Employee. Zrób w każdym komponencie przycisk do jego usunięcia.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć