al llamar a la función, por ejemplo, al hacer clic, no importa si escribo llaves o no. Funciona en ambos escenarios. Pero hice una función, que activa un evento personalizado desde un niño. luego lo espero en un componente principal y disparo mi función (que está en el principal), para actualizar el estado. Noté que cuando escribo llaves en esa función, vue devuelve un error. ¿Por qué está pasando eso? (Soy nuevo en vue js :)).
función en un componente secundario, que se invoca al hacer clic:
toggleFavorite: function () { this.$emit("toggle-favorite", this.id); }Un componente hijo renderizado dentro de un padre
<friend-contact v-for="friend in friends" :data="friend" :key="friend.id" @toggle-favorite="toggleFavorite"> // if i write 'toggleFavorite()' here, I am // geting an error </friend-contact>Una función que se activa en un evento personalizado.
toggleFavorite: function (id) { let friendToUpdate = this.friends.find((el) => el.id === id); friendToUpdate.favorite = !friendToUpdate.favorite; }Un evento no importa, lo que importa aquí es si un parámetro se usa en el controlador de eventos o no.
@toggle-favorite="toggleFavorite" hace que toggleFavorite se utilice como controlador de eventos.
@toggle-favorite="toggleFavorite()" da como resultado que la expresión toggleFavorite() se evalúe en el evento, con el parámetro id undefined .
Hay un valor mágico $event que representa el parámetro de evento en el controlador de eventos. Para que coincida con la primera sintaxis, debe ser @toggle-favorite="toggleFavorite($event)" .