在Vue.js中,子组件向父组件传参通常通过自定义事件($emit
)来实现。子组件通过触发一个事件,并将需要传递的参数作为事件的负载,父组件在模板中监听这个事件,并在事件处理函数中接收这些参数。
以下是一个简单的示例:
子组件(ChildComponent.vue)
vue复制代码
<template> |
<button @click="sendToParent">点击向父组件传参</button> |
</template> |
<script> |
export default { |
methods: { |
sendToParent() { |
// 使用$emit触发一个名为'child-event'的事件,并传递一个参数'hello from child' |
this.$emit('child-event', 'hello from child'); |
} |
} |
} |
</script> |
父组件(ParentComponent.vue)
vue复制代码
<template> |
<div> |
<!-- 在父组件的模板中,使用v-on指令(或@简写)监听子组件的'child-event'事件 --> |
<ChildComponent @child-event="handleChildEvent" /> |
</div> |
</template> |
<script> |
import ChildComponent from './ChildComponent.vue'; |
export default { |
components: { |
ChildComponent |
}, |
methods: { |
handleChildEvent(payload) { |
// 在事件处理函数中,接收从子组件传递过来的参数 |
console.log(payload); // 输出:'hello from child' |
} |
} |
} |
</script> |
在这个例子中,当点击子组件中的按钮时,会触发sendToParent
方法,该方法使用$emit
触发一个名为child-event
的事件,并传递一个字符串参数'hello from child'
。父组件在模板中监听这个事件,并在handleChildEvent
方法中接收并处理这个参数