4 回答
TA贡献1866条经验 获得超5个赞
我认为您需要emits
在组件中定义:
export default {
name: "HelloWorld",
emits: ["updatedcount"], // <--- add this line
setup(_,{ emit }) {
...
},
};
TA贡献1824条经验 获得超5个赞
更新:
在 vue 3 脚本设置中你会做
const emits = defineEmits(["updatedcount"])
emits("updatedcount", store.count);
TA贡献1830条经验 获得超3个赞
当在我自己的 vue 3 应用程序中看到此错误时,我发现将组件的模板内容包装在一个空的 div 中可以解决我认为与错误消息的“无法自动继承”部分有关的问题。
似乎 vue 的工作方式是 vue 将尝试对 @click 和 @input 等常见事件使用属性继承以传递给底层元素,但是当组件的根部有多个同级元素时,它不知道要传递哪个选择。
请注意,这些事件可能会改变某些行为,因为新的包装父 div 现在将直接绑定到它的事件。
<template>
<div>
<h1>{{ store.count }}</h1>
<button @click="fired">click me</button>
</div>
</template>
TA贡献1802条经验 获得超4个赞
在 vue3 中你必须定义 emits,你的子组件看起来像这样:
子组件.vue:
<template>
<h1>{{ store.count }}</h1>
<button @click="fired">click me</button>
</template>
<script>
import useStore from "../store/store.js";
export default {
name: "HelloWorld",
emits :{
updatedcount: null, <--- add this lines
},
data: () => ({
store: useStore(),
}),
methods:
fire () {
store.count++;
this.$emit("updatedcount", store.count);
},
};
</script>
添加回答
举报