第九十一篇:Vue 具名插槽作用域

好家伙,

 

1.作用域插槽

插槽在定义的时候,可以定义一些属性,便于在父组件中使用

来看看代码:

Article.vue组件中:

复制代码
<template>
  <div class="article-container">
    <!-- 文章内容 -->
    <div class="header-box">
        <!-- 在封装组件时,为预留的<slot></slot>提供对应的值,
        这种用法叫做"作用域插槽" -->
        <slot name="title" msg="我是msg属性"></slot>
    </div>
    <!-- 文章标题-->
    <div class="content-box">
        <slot name="content"></slot>
    </div>
    <!-- 文章作者 -->
    <div class="footer-box">
        <slot name="author"></slot>
    </div>
  </div>
</template>
复制代码

 

App.vue组件中:

复制代码
<template>
  <div>
    <h1>App根组件</h1>
    <Article>
     <template #title="obj">
       <h3>我是头</h3>
       <p>{{ obj }}</p>
     </template>

     <template #content>
       <h3>写博客真是一件开心的事情(NO)</h3>
     </template>

     <template #author>
       <h3>作者:养肥胖虎</h3>
     </template>
    </Article>
  </div>
</template>
复制代码

截图如下:

 

 

 msg的值是在子组件中定义的,

父组件中拿到msg的值,

再在子组件中把它渲染出来,

无形中完成了一次子父传值

 

2.作用域插槽的结构赋值

将Article.vue组件中的代码改为:

复制代码
<template>
  <div class="article-container">
    <!-- 文章内容 -->
    <div class="header-box">
        <!-- 在封装组件时,为预留的<slot></slot>提供对应的值,
        这种用法叫做"作用域插槽" -->
        <slot name="title" msg="我是msg属性" :user="userinfo"></slot>
    </div>
    <!-- 文章标题-->
    <div class="content-box">
        <slot name="content"></slot>
    </div>
    <!-- 文章作者 -->
    <div class="footer-box">
        <slot name="author"></slot>
    </div>
  </div>


</template>

<script>
export default {
    name:'Article',
    data(){
        return{
            //用户信息对象
            userinfo:{
                name:'zs',
                age:20

            }
        }
    }
}
</script>
复制代码

于是在父组件中,可以使用解构方法调用值:

在App.vue组件中:

复制代码
<template>
  <div>
    <h1>App根组件</h1>
    <Article>
     <template #title="{ msg,user }">
       <h3>我是头</h3>
       <p>{{ msg }}</p>
       <p>{{ user }}</p>
       <p>{{ user.name }}</p>
     </template>

     <template #content>
       <h3>写博客真是一件开心的事情(NO)</h3>
     </template>

     <template #author>
       <h3>作者:养肥胖虎</h3>
     </template>
    </Article>
  </div>
</template>
复制代码

搞定后:

 

 

 

That's all

 

posted @   养肥胖虎  阅读(68)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示