Vue中的插槽(v-slot)

news/2024/7/24 11:56:01 标签: vue, javascript, html, html5

在 2.6.0 中,我们为具名插槽和作用域插槽引入了一个新的统一的语法 (即 v-slot 指令)。它取代了 slotslot-scope 这两个目前已被废弃但未被移除且仍在文档中的 attribute

具名插槽

相对匿名插槽组件slot标签带name命名的
书写组件:

html">Vue.component('lv-hello', {
  template: `
    <div>
      <slot name="header"></slot>
      <h1>哈利路亚</h1>
    </div>
  `
})

调用组件:

html"><div id="app">
  <!-- 老版本使用具名插槽 -->
  <lv-hello>
    <p slot="header">我是头部</p>
  </lv-hello>
  <!-- 新版本使用具名插槽 -->
  <lv-hello>
    <!-- 注意:这块的 v-slot 指令只能写在 template 标签上面,而不能放置到 p 标签上 -->
    <template v-slot:header>
      <p>我是头部</p>
    </template>
  </lv-hello>
</div>

缩写:
将 v-slot: 替换成 # 号

html"><div id="app">
  <lv-hello>
    <template #header>
      <p>我是头部</p>
    </template>
    <!-- 注意: #号后面必须有参数,否则会报错。即便是默认插槽,也需要写成 #default -->
    <template #default>
      <p>我是默认插槽</p>
    </template>
  </lv-hello>
</div>

作用域插槽

子组件内数据可以被父页面拿到(解决了数据只能从父页面传递给子组件)
书写组件:

html" title=javascript>javascript">Vue.component('lv-hello', {
  data: function () {
    return {
      firstName: '姓',
      lastName: '名'
    }
  },
html">template: `
    <div>
      <slot name="header" :firstName="firstName" :lastName="lastName"></slot>
      <h1>哈利路亚</h1>
    </div>
  `
})

调用组件:

html"><div id="app">
  <!-- 老版本使用具名插槽 -->
  <lv-hello>
    <p slot="header" slot-scope="hh">我是头部 {{ hh.firstName }} {{ hh.lastName }}</p>
  </lv-hello>
  <!-- 新版本使用具名插槽 -->
  <lv-hello>
    <!-- 注意:这块的 v-slot 指令只能写在 template 标签上面,而不能放置到 p 标签上 -->
    <template v-slot:header="hh">
      <p>我是头部 {{ hh.firstName }} {{ hh.lastName }}</p>
    </template>
  </lv-hello>
</div>

http://www.niftyadmin.cn/n/1527284.html

相关文章

ajax、axios、fetch的区别

ajax $.ajax({type: POST,url: url,data: data,dataType: dataType,success: function () {},error: function () {} });传统 Ajax 指的是 XMLHttpRequest&#xff08;XHR&#xff09;&#xff0c; 最早出现的发送后端请求技术&#xff0c;隶属于原始js中&#xff0c;核心使用…

Vuex辅助函数的使用(mapState、mapActions、mapMutations、mapGetters)

本文章介绍vuex中辅助函数的使用&#xff0c;如果想学习vuex基础的小伙伴可以点击此链接进入上一篇文章 一、为什么需要使用辅助函数 当一个组件需要对多个状态进行操作的时候&#xff0c;代码会有些重复和冗余&#xff0c;我们可以使用辅助函数帮助我们用极少的代码解决这些…

mapState应该怎么去引modules中的数据?

store里的数据分成模块后&#xff0c;mapState辅助函数里应该怎么引模块的数据&#xff1f; store文件结构&#xff1a; - src - components - store- index.js- modules- carts.jsstore中index.js代码&#xff1a; modules: { carts&#xff0c;//注册carts模块}template代…

axios使用方法

axios封装代码传送门&#xff08;可直接使用&#xff09; 1、基本用法 安装 cnpm i axios --save在 main.js 中引入 axios import axios from axios Vue.prototype.$axios axios在组件中使用 axios <script>export default {mounted(){this.$axios.get(/goods.json…

解决VS2019取消对空指针的引用问题,以及空指针报错问题

解决VS2019取消对空指针的引用的警告问题&#xff0c;以及空指针报错问题 取消对空指针的引用警告 &#xff08;之前有个方法是在判断执行后使用return语句退出这个函数&#xff0c;但存在很多问题&#xff0c;比如与函数类型不匹配等等&#xff0c;所以下面改成直接退出程序…

axios封装代码(直接使用)

axios基础用法传送门&#xff08;点击这里&#xff09; 话不多说&#xff0c;直接上代码 一、在组件中调用 封装在http文件中 import axios from axios//创建axios实例 const axiosObj axios.create({baseURL: http://api.web1024.cn,timeout: 8000,params: {key: gxn759} …

Java文本文件的写入与输出

文章目录文件的写入文件读取文件的写入 public static void main(String[] args) throws IOException { PrintWriter out new PrintWriter("data.txt", StandardCharsets.UTF_8); out.print("123456789"); out.printf("%d", 123456); out.clos…

html文本溢出隐藏三个小圆点

直接上代码&#xff1a; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;