文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用Vue slot插槽

2023-06-25 10:45

关注

这篇文章主要介绍“如何使用Vue slot插槽”,在日常操作中,相信很多人在如何使用Vue slot插槽问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Vue slot插槽”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、为什么使用slot

1.1 slot(插槽)

1.2 组件中的插槽

1.3 例子

2、如何封装这类组件(slot)

3、 插槽的案例

<div id="app">  <cpn><button>按钮</button></cpn>  <cpn><p>hello world</p></cpn>  <cpn><p>666</p></cpn></div><template id="cpn">  <div>    <h3>我是组件</h3>    // 插槽预留的位置,方便使用者自己填写    <slot></slot>  </div></template><script src="../js/vue.js"></script><script>  const app = new Vue({    el: "#app",    components: {      "cpn": {        template: `#cpn`,      }    }  })</script>

上述代码干了以下事情:

最后展示效果如下:

 如何使用Vue slot插槽

4、插槽默认值

如果我们需要大量使用这个组件,而且组件预留的插槽,我们大多数都是填写的返回按钮,只有极少数填写其他的,那么这种情况就可以为插槽设置一个默认值

<div id="app">  <cpn></cpn>  <cpn></cpn>  <cpn></cpn></div><template id="cpn">  <div>    <slot><button>返回</button></slot>  </div></template>

我们在子组件中设置了一个默认值为返回按钮的插槽,那么父组件在使用时如果不填写任何内容,那么默认就是返回按钮

5、具名插槽

有时我们需要多个插槽。例如对于一个带有如下模板的组件:

<template id="cpn">  <div>    <slot name="header"><span>头部</span></slot>    <slot name="main"><span>中间</span></slot>    <slot name="footer"><span>页脚</span></slot>  </div></template>

我们在组件中预留了3个插槽,但是这里指定了3个名字,后续父组件使用v-slot指定name属性后就能填写自己的内容,比如如下代码

<div id="app">  <cpn>    <template v-slot:header>      <p>header头部</p>    </template>    <template v-slot:footer>      <p>footer页脚</p>    </template>  </cpn></div>

使用了cpn组件,然后指定了插槽name属性为headerfooter的内容,指定后自己填写的内容就会替换默认的内容。

注意:这里的语法格式是固定的,必须在使用template标签上绑定v-slot:插槽的名字

6、编译作用域

通过外面传给组件的变量,在以后使用插槽的时候是不能使用的

<div id="app">  <cpn v-show="isShow"></cpn></div><template id="cpn">  <p>hello</p></template><script src="../js/vue.js"></script><script>  const app = new Vue({    el: "#app",    data: {      isShow: true    },    components: {      "cpn": {        template: `#cpn`,        data(){          return{            isShow: false          }        }      }    }  })</script>

上面我们定义了子组件cpn,子组件中有属性isShowapp实例中也定义了属性isShow,最后使用子组件cpn时使用了v-show,当值为true显示,值为false不显示
问题:v-show中的isShow的值是实例中的true还是子组件中的false
答案:是true,因为你使用的时候是在app实例范围内,所以isShow会去从实例中的data去查找,虽然你是在cpn子组件中绑定的,但是这里的cpn你只需要把他当做普通的标签即可,如果你想让isShow的值为false,那么你只需要在子组件的template模板中使用<p v-show="isShow">hello</p>

7、作用域插槽

默认在插槽中的代码只能使用全局Vue中的属性,如果想要使用自定义组件中的属性,那么需要在定义slot的时候使用v-bind来进行绑定。

<div id="app">  <cpn>    <template v-slot:default="slot">      {{slot.data.firstName}}    </template>  </cpn></div><template id="cpn">  <div>    <slot :data="user">      {{user.lastname}}    </slot>  </div></template><script src="../js/vue.js"></script><script>  const app = new Vue({    el: "#app",    components: {      "cpn": {        template: `#cpn`,        data(){          return{            "user": {              "firstName": "甲",              "lastname": "壳虫"            }          }        }      }    }  })</script>

上述代码做了如下几件事情:

到此,关于“如何使用Vue slot插槽”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯