首页IT科技vue父子组件传值的方法(Vue3使用插槽时的父子组件传值)

vue父子组件传值的方法(Vue3使用插槽时的父子组件传值)

时间2025-05-02 01:11:12分类IT科技浏览4274
导读:Vue3使用插槽时的父子组件传值 用法见官方文档深入组件章节,插槽部分:...

Vue3使用插槽时的父子组件传值

用法见官方文档深入组件章节            ,插槽部分:

参考文档:插槽-作用域插槽-插槽prop

作用域插槽

有时让插槽内容能够访问子组件中才有的数据是很有用的            。

需求:插槽内容能够访问子组件中才有的数据

实现

子组件

TodoList.vue

<template> <div v-for="(todoItem, index) in state.todoList"> <slot :item="todoItem" :index="index"></slot> </div> </template> <script setup> import { reactive } from @vue/reactivity const state = reactive({ todoList: [Feed a cat, Buy milk] }) </script> <style lang="less"> </style>

在子组件插槽上定义需要传递的属性                  ,如上代码中的 item 和 index ;

子组件将子组件中定义的数据通过插槽属性传递给父组件;

父组件

useSlot.vue

<template> <div> <todo-list> <template v-slot:default="slotProps"> <button @click="handleClick(slotProps)">{{slotProps.item}}</button> </template> </todo-list> <div> <h3>点击按钮</h3> <li>{{`${state.slotProps.index + 1}: ${state.slotProps.item}`}}</li> </div> </div> </template> <script setup> import { reactive } from @vue/reactivity import TodoList from ./TodoList.vue const state = reactive({ slotProps: { index: 0, item: default } }) const handleClick = (slotProps) => { state.slotProps = slotProps } </script> <style lang="less"> </style>

父组件中定义插槽属性名字slotProps

默认插槽 <template v-slot:default="slotProps"> ... 当使用具名插槽时 <template v-slot:other="slotProps"> ...

属性slotProps获取子组件传递过来的插槽属性

注意:

属性只能在插槽内部才能获取 具名插槽写法

演示

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
百度高级研发工程师名单(核心技术研发工程师 百度在线网络技术(北京)有限公司 庞果网Pongo.cn) 苹果cms怎么对接app(苹果CMS源码:打造专业网站建设的首选)