• vue(十)——插槽slot


    摘要

            简单来说插槽就是一个占位的标签,当父组件传递进来内容后就会把这个占位标签替换掉。插槽是由于有时组件的要求不一样,为了组件的更多扩展性而进行的一种功能。

            插槽主要分为三种:普通插槽(匿名插槽)、具名插槽和作用域插槽。今天主要记录普通插槽和具名插槽;由于距离学习时间有一年多了,作用域插槽放到后面复习后多理解一下再进行记录。

    1、普通插槽

            vue的插槽是使用标签来进行定义的。具体使用方法如下:(由于只是演示插槽的使用,为了在一个页面直观的显示,并没有用vue-cli)

    1. <head>
    2. <meta charset="UTF-8">
    3. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    4. <title>Documenttitle>
    5. head>
    6. <body>
    7. <div id="app">
    8. <cpn>cpn>
    9. <cpn><button>替换默认button>cpn>
    10. <cpn>
    11. <button>按钮button>
    12. <p>多元素替换p>
    13. <button>按钮button>
    14. cpn>
    15. div>
    16. <template id="cpn">
    17. <div>
    18. <h2>插槽使用h2>
    19. <p>插槽是由于有时组件的要求不一样,为了组件的更多扩展性p>
    20. <slot><h6>默认值h6>slot>
    21. div>
    22. template>
    23. <script src="../node_modules/vue/dist/vue.js">script>
    24. <script>
    25. const app = new Vue({
    26. el: "#app",
    27. data: {
    28. },
    29. components: {
    30. cpn: {
    31. template: "#cpn",
    32. }
    33. }
    34. });
    35. script>
    36. body>
    37. html>

    结果:

     由上述代码和结果可以看出:

    1、如果组件中并无传递,插槽会使用默认值,此时也可以把插槽就当做一个div标签

    2、插槽可以使用一个标签进行替换,也可以使用多个标签进行替换

    2、具名插槽

            具名插槽就是给插槽加上一个属性,可以确定你要替换的是哪一部分

            例如我们一个项目可能多处需要用到nav组件,但是nav组件有些页面是在中间显示,有些页面是左中右布局,有些页面是左右或者中右布局,这里就可以使用具名插槽来解决。使用方法如下:

    1. <head>
    2. <meta charset="UTF-8">
    3. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    4. <title>Documenttitle>
    5. head>
    6. <body>
    7. <div id="app">
    8. <h1>默认h1>
    9. <cpn>cpn>
    10. <br>
    11. <br>
    12. <hr>
    13. <h1>替换h1>
    14. <cpn>
    15. <span slot="center">中间替换span>
    16. cpn>
    17. <cpn>
    18. <button slot="left">左边替换button>
    19. cpn>
    20. div>
    21. <template id="cpn">
    22. <div>
    23. <slot name="left">左边slot>
    24. <slot name="center">中间slot>
    25. <slot name="right">右边slot>
    26. div>
    27. template>
    28. <script src="../node_modules/vue/dist/vue.js">script>
    29. <script>
    30. const app = new Vue({
    31. el: "#app",
    32. data: {
    33. },
    34. components: {
    35. cpn: {
    36. template: "#cpn"
    37. }
    38. }
    39. });
    40. script>
    41. body>
    42. html>

    结果:

     由上可以看出,具名插槽可以使用更多的组合进行显示,可以有选择的进行替换。

  • 相关阅读:
    【数据结构】B树(B-树)和B+树
    文本分类从入门到精通,代码整理。
    Spring Boot、Spring MVC 和 Spring Cloud 深度解析
    很久没写JAVA程序了,原来用GMAIL发送邮件这么简单
    HBUILDER vue启动失败
    2015-04《信息资源管理 02378》真卷解析,逐题解析+背诵技巧
    微服务从代码到k8s部署应有尽有系列(二、网关)
    为何要实现发票信息的数字化管理?
    MySQL根据备注查询表、字段
    【2013年数据结构真题】
  • 原文地址:https://blog.csdn.net/qq_43957263/article/details/126212887