⊗jsvuPmCmRR 68 of 72 menu

Remoção Reativa de Componentes no Vue

Vamos aprender a remover componentes filhos de uma lista de forma reativa. Para fazer isso, vamos criar um botão específico em cada componente filho. Ao clicar neste botão, um evento será emitido e no componente pai o componente filho especificado será removido pelo seu id.

Vamos começar a implementação. Suponha que no componente pai exista o seguinte array de objetos:

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

Vamos escrever no componente pai um método para remover um usuário pelo seu id:

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

Vamos criar os componentes em um loop, passando como parâmetro o nome, sobrenome, id e o método de remoção:

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

Vamos definir os dados de entrada na configuração props e o evento emitido na configuração emits:

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

Vamos exibir no template do componente o nome e sobrenome do usuário:

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

Agora, vamos criar um botão que, ao ser clicado, emite um evento para remoção. O parâmetro deste evento será o id do componente. O componente pai, ao receber o evento, removerá este usuário do array de objetos e ele desaparecerá reativamente da lista de usuários.

Então, vamos implementar este botão:

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

Exiba em um loop os componentes Employee. Crie em cada componente um botão para removê-lo.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar