iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何使用Vue slot插槽
  • 689
分享到

如何使用Vue slot插槽

2023-06-25 10:06:10 689人浏览 薄情痞子
摘要

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

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

    1、为什么使用slot

    1.1 slot(插槽)

    • 在生活中很多地方都有插槽,电脑usb的插槽,插板当中的电源插槽

    • 插槽的目的是为了让我们原来的设备具备更多的扩展性

    • 比如电脑的USB我们可以插入U盘,手机,鼠标,键盘等等

    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>

    上述代码干了以下事情:

    • 定义了子组件cpn,然后在子组件中预留了一个插槽,插槽的内容由用户填写

    • 父组件中使用了3次子组件,3个子组件分别给插槽填写了不同的内容

    最后展示效果如下:

     如何使用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>

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

    • 定义了子组件cpn,在子组件中定义了user

    • 在子组件cpn的模板的插槽中绑定了属性data,且插槽的默认值为user.lastname

    • html中使用了子组件,并使用v-slot绑定了插槽Prop对象,这样就可以通过对象名称.子组件中绑定的属性名称(slot.data),来访问子组件中的数据

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

    --结束END--

    本文标题: 如何使用Vue slot插槽

    本文链接: https://www.lsjlt.com/news/304064.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • C++ 生态系统中流行库和框架的贡献指南
      作为 c++++ 开发人员,通过遵循以下步骤即可为流行库和框架做出贡献:选择一个项目并熟悉其代码库。在 issue 跟踪器中寻找适合初学者的问题。创建一个新分支,实现修复并添加测试。提交...
      99+
      2024-05-15
      框架 c++ 流行库 git
    • C++ 生态系统中流行库和框架的社区支持情况
      c++++生态系统中流行库和框架的社区支持情况:boost:活跃的社区提供广泛的文档、教程和讨论区,确保持续的维护和更新。qt:庞大的社区提供丰富的文档、示例和论坛,积极参与开发和维护。...
      99+
      2024-05-15
      生态系统 社区支持 c++ overflow 标准库
    • c++中if elseif使用规则
      c++ 中 if-else if 语句的使用规则为:语法:if (条件1) { // 执行代码块 1} else if (条件 2) { // 执行代码块 2}// ...else ...
      99+
      2024-05-15
      c++
    • c++中的继承怎么写
      继承是一种允许类从现有类派生并访问其成员的强大机制。在 c++ 中,继承类型包括:单继承:一个子类从一个基类继承。多继承:一个子类从多个基类继承。层次继承:多个子类从同一个基类继承。多层...
      99+
      2024-05-15
      c++
    • c++中如何使用类和对象掌握目标
      在 c++ 中创建类和对象:使用 class 关键字定义类,包含数据成员和方法。使用对象名称和类名称创建对象。访问权限包括:公有、受保护和私有。数据成员是类的变量,每个对象拥有自己的副本...
      99+
      2024-05-15
      c++
    • c++中优先级是什么意思
      c++ 中的优先级规则:优先级高的操作符先执行,相同优先级的从左到右执行,括号可改变执行顺序。操作符优先级表包含从最高到最低的优先级列表,其中赋值运算符具有最低优先级。通过了解优先级,可...
      99+
      2024-05-15
      c++
    • c++中a+是什么意思
      c++ 中的 a+ 运算符表示自增运算符,用于将变量递增 1 并将结果存储在同一变量中。语法为 a++,用法包括循环和计数器。它可与后置递增运算符 ++a 交换使用,后者在表达式求值后递...
      99+
      2024-05-15
      c++
    • c++中a.b什么意思
      c++kquote>“a.b”表示对象“a”的成员“b”,用于访问对象成员,可用“对象名.成员名”的语法。它还可以用于访问嵌套成员,如“对象名.嵌套成员名.成员名”的语法。 c++...
      99+
      2024-05-15
      c++
    • C++ 并发编程库的优缺点
      c++++ 提供了多种并发编程库,满足不同场景下的需求。线程库 (std::thread) 易于使用但开销大;异步库 (std::async) 可异步执行任务,但 api 复杂;协程库 ...
      99+
      2024-05-15
      c++ 并发编程
    • 如何在 Golang 中备份数据库?
      在 golang 中备份数据库对于保护数据至关重要。可以使用标准库中的 database/sql 包,或第三方包如 github.com/go-sql-driver/mysql。具体步骤...
      99+
      2024-05-15
      golang 数据库备份 mysql git 标准库
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作