课程名称:vue3.0实现todolist
章节名称:
讲师姓名:五月的夏天
课程内容(概述)
1、讲解父组件如何传参给子组件,子组件如何传参给父组件
介绍
vue3.0
和vue2.0
父子传参时略有区别,因为在setup函数中无法使用this
指向组件实例,所以,在子组件中,可以在setup起点函数中接收到props
和{emit}
参数,即:setup(props, { emit }){}
,依此来实现父子传值
编码
子组件传递给父组件是通过setup中的ctx.emit分发事件的方式传递参数
<!-- 父组件 Home.vue --> <template> <div> -------------------------- <!-- 父组件传参给子组件通过动态绑定属性的方式,子组件在props里接收 --> <About :message="message" @on-send="getParentParams" /> <p>子组件传递的参数:{{ parentMessage }}</p> -------------------------- </div> </template> <script> import { defineComponent, ref } from 'vue' export default defineComponent({ name: 'About', setup() { const message = ref('这是传递给子组件的参数值') const parentMessage = ref(null) const getParentParams = (result) => { parentMessage.value = result.message } return { message, parentMessage, getParentParams } } }) </script>
<!-- 子组件About.vue --> <template> <div> -------------------------- <p>父组件传递的参数:{{ childMessage }}</p> -------------------------- </div> </template> <script> import { defineComponent, ref } from 'vue' export default defineComponent({ name: 'About', props:{ message: { type: String } }, setup(props, ctx) { // 接收父组件数据 const childMessage = ref(null) childMessage.value = props.message ctx.emit('on-send', { message: '这是传递给父组件的数据' }) return { childMessage } } }) </script>
学习截图