Estoy tratando de emitir datos de niño a padre usando la API de composición
Recibo la siguiente advertencia.
[Advertencia de Vue]: los detectores de eventos extraños que no emiten (recuento actualizado) se pasaron al componente, pero no se pudieron heredar automáticamente porque el componente representa nodos raíz de texto o fragmentos. Si se pretende que el oyente sea solo un oyente de eventos personalizado del componente, declárelo usando la opción "emits". en <HelloWorld onUpdatedcount=fn > en
childcomponent.vue
<template> <h1>{{ store.count }}</h1> <button @click="fired">click me</button> </template> <script> import useStore from "../store/store.js"; export default { name: "HelloWorld", setup(_,{ emit }) { const store = useStore(); const fired = () => { store.count++; emit("updatedcount", store.count); }; return { store, fired }; }, }; </script>parentcomponent.vue
<template> <div> {{ hello }} <br /> <br /> <input type="text" v-model="hello.searchQuery" /> <br><br> <button @click="hello.count--">click me too!</button> <hello-world @updatedcount="mydata" /> </div> </template> <script> import HelloWorld from "./components/HelloWorld.vue"; import useStore from "./store/store.js"; export default { components: { HelloWorld, }, setup() { const hello = useStore(); function mydata(event) { console.log(event); } return { hello, mydata }; }, }; </script>Creo que necesita definir las emits en su componente: https://v3.vuejs.org/guide/component-custom-events.html#defining-custom-events
export default { name: "HelloWorld", emits: ["updatedcount"], // <--- add this line setup(_,{ emit }) { ... }, };actualizar:
en la configuración del script vue 3 que harías
const emits = defineEmits(["updatedcount"]) emits("updatedcount", store.count);