vue使用插槽来传递数据
时间: 2025-01-08 08:47:18 浏览: 29
### Vue 中使用 Slot 插槽传递数据
在 Vue.js 中,插槽不仅用于结构上的灵活性,还可以用来传递数据。这通常通过作用域插槽(Scoped Slots)实现。
#### 基本概念
当父组件向子组件传递内容时,默认情况下这些内容是静态的。然而,在某些场景下,可能希望动态地将来自父组件的数据传入到子组件中的特定位置。此时可以利用带有作用域的对象作为桥梁[^1]。
#### 实现方式
为了展示如何具体操作,下面给出一段简单的代码示例:
假设有一个 `list-item` 组件,该组件接收一个对象列表,并允许外部自定义渲染每一项的内容。
```html
<!-- 子组件 list-item.vue -->
<template>
<ul>
<!-- 定义具名插槽并暴露 item 变量给父级 -->
<li v-for="(item, index) in items" :key="index">
<slot :item="item"></slot>
</li>
</ul>
</template>
<script>
export default {
props: ['items']
}
</script>
```
接着是在父组件里调用这个 `list-item` 并为其指定具体的呈现逻辑:
```html
<!-- 父组件 ParentComponent.vue -->
<template>
<div>
<h2>{{ title }}</h2>
<!-- 使用v-slot指令绑定变量 -->
<list-item :items="users">
<template v-slot="{ item }"> <!-- 解构赋值获取item -->
{{ item.name }} - {{ item.age }}
</template>
</list-item>
</div>
</template>
<script>
import ListItem from './components/list-item.vue'
export default {
data() {
return {
title: '用户列表',
users: [
{ name: '张三', age: 20 },
{ name: '李四', age: 25 }
]
};
},
components: {
"list-item":ListItem,
}
};
</script>
```
上述例子展示了怎样借助 scoped slots 来让父组件控制子组件内部元素的具体表现形式的同时还能访问子组件提供的局部状态或计算属性等信息[^2]。
阅读全文
相关推荐



















