- props
父组件使用 props 传递数据给子组件:
<!-- parent.vue -->
<child :msg="message"></child>
<!-- child.vue -->
<p>{{ msg }}</p>
// parent.vue
data() {
return {
message: 'Hello!'
}
}
子组件使用 props 接收:
// child.vue
props: ['msg']
- emit 自定义事件
子组件触发事件,父组件监听该事件并更新数据:
<!-- parent.vue -->
<child @update="updateMessage"></child>
<!-- child.vue -->
<button @click="emitUpdate">Update</button>
<p>{{ msg }}</p>
// parent.vue
methods: {
updateMessage(newMsg) {
this.message = newMsg
}
}
// child.vue
methods: {
emitUpdate() {
this.$emit('update', 'Updated message!')
}
}
- refs
通过 ref 给子组件绑定引用,然后通过该引用直接更新子组件的数据或调用子组件的方法:
<!-- parent.vue -->
<child ref="child"></child>
<button @click="updateChildMessage">Update Child Message</button>
// parent.vue
methods: {
updateChildMessage() {
this.$refs.child.msg = 'New message'
}
}
在 child 组件中:
export default {
data() {
return {
msg: 'Initial message'
}
}
}
- provide / inject
父组件提供数据,子组件注入并使用:
// parent.vue
provide: {
name: 'Parent'
}
子组件:
// child.vue
inject: ['name']
console.log(name) // Prints "Parent"
最后总结一下:Vue 3 中组件传值主要的方式有:
- props - 父传子
- emit - 子传父
- refs - 父访问子
- provide/inject - 祖先传后代
这些方式可以组合使用,实现非常灵活的组件通信。
本文转载自: https://blog.csdn.net/qwe0415/article/details/130369049
版权归原作者 下班别坐805 所有, 如有侵权,请联系我们删除。
版权归原作者 下班别坐805 所有, 如有侵权,请联系我们删除。