首页> 基础笔记 >Vue学习笔记 >组件 组件
vue组件插槽--介绍和作用域
作者:小萝卜 2024-03-17 【 Vue 】 浏览 535
简介在某些场景中,我们可能想要为子组件传递一些模板片段,让子组件在它们的组件中渲染这些片段。
插槽介绍
<slot> 元素是一个插槽出口 (slot outlet),标示了父元素提供的插槽内容 (slot content) 将在哪里被渲染。
实例:
父级组件:
<template>
<ComponentE>
<p>插槽内容</p>
</ComponentE>
</template>
<script>
import ComponentE from './componentE.vue'
export default {
components: {
// 局部注册组件
ComponentE
}
}
</script>
子组件接收插槽内容:
<template>
<button>
<div class="main">
<!--父级组件传过来的插槽数据-->
<slot></slot>
</div>
</button>
</template>
<script>
export default{
}
</script>
渲染结果:
<div class="main">
<!--父级组件传过来的插槽数据-->
<p>插槽内容</p>
</div>
渲染作用域
插槽内容可以访问到父组件的数据作用域,因为插槽内容本身是在父组件模板中定义的。举例来说:
<template>
<!--子组件定义message对这里不起作用-->
<span>{{ message }}</span>
<ComponentE>
<p>{{ message }}</p>
</ComponentE>
</template>
<script>
import ComponentE from './componentE.vue'
export default {
data(){
return{
message:'插槽内容',
}
},
components: {
// 局部注册组件
ComponentE
}
}
</script>
这里的两个 {{ message }} 插值表达式渲染的内容都是一样的。
插槽内容无法访问子组件的数据。Vue 模板中的表达式只能访问其定义时所处的作用域,这和 JavaScript 的词法作用域规则是一致的。换言之:
父组件模板中的表达式只能访问父组件的作用域;子组件模板中的表达式只能访问子组件的作用域。
很赞哦! (0)
上一篇:vue组件插槽--默认内容