当前位置:网站首页 > Vue.js开发 > 正文

vue3.0 插槽(vue 插槽详解)



Vue.js是一款流行的前端框架,提供了强大的组件化功能。其中,插槽(Slot)技术是一种用于组件化开发的重要技术,允许我们在组件中定义一些占位符,然后在使用组件时,通过插槽来传递内容。插槽的灵活性使得我们可以轻松地定制组件的外观和行为,可以帮助我们更好地处理组件的可复用性和灵活性。

在Vue中,插槽的使用方式可以分为三种:默认插槽、具名插槽和作用域插槽。

默认插槽是最简单的插槽形式,它允许我们将组件的内容传递到组件内部的一个占位符中。在组件的模板中使用定义默认插槽,然后在使用组件时,将内容传递给这个插槽。

 
  
 
  

截图20230913205257.jpg

截图20230913205337.jpg 在上面的代码示例中,表示一个默认插槽,将传递给Com01组件的内容放置在这个插槽中。如果把p标签那一行注释掉,就会显示默认内容。

具名插槽允许我们在组件中定义多个插槽,并且可以根据插槽的名称来传递内容。在组件的模板中使用定义具名插槽,然后在使用组件时,使用或者来传递内容给指定的插槽。

 
  
 
  

截图20230913210257.jpg

作用域插槽是一种特殊的插槽,它允许我们在插槽内部访问组件实例的数据,允许父组件将数据传递到子组件中,并在子组件中使用。在组件的模板中使用定义作用域插槽,并在使用组件时,使用来访问插槽内部的数据。

 
  
 
  

截图20230915133548.jpg

可以看到父组件中拿到的scope就是一个对象,包括了子组件中传来的三个数组,我们可以自己选择展示哪些数据。

 
  

截图20230915133749.jpg

具名作用域插槽的工作方式也是类似的,插槽props可以作为v-slot指令的值被访问到:v-slot:header="props",也可以直接缩写成#header="props",这是缩写形式。

 
  
 
  

截图20230915134930.jpg

动态插槽是一种动态地选择插槽名称的方式。我们可以根据组件的状态或属性来决定使用哪个插槽,可以动态地决定将内容插入到哪个具名插槽中。

 
  
 
  

我们在组件中添加了一个按钮,并在按钮的点击事件处理程序中切换currentSlot的值。当按钮被点击时,currentSlot的值会从default切换到custom,或者从custom切换到default,从而实现默认内容和自定义内容的切换。

在父组件中使用这个组件时,可以根据currentSlot的值来动态地指定插槽名称。

截图20230915163423.jpg

截图20230915163433.jpg

可以通过this.$slots访问到插槽的内容。

 
  

截图20230915163836.jpg

其实从打印结果可以看出,slot本质就是Proxy代理的对象,属性名就是各个插槽的名字,属性值就是对应的函数,调用函数得到的结果就是虚拟结点。

就相当于在调用属性名为slot1的函数,就相当于在调用属性名为slot2的函数,该函数接收了msg的参数。

截图20230915164543.jpg

  • 插槽内容可以是任意类型,包括HTML、组件等。
  • 默认插槽可以不用写属性,具名插槽必须写属性。
  • 作用域插槽传递的数据可以根据需要命名。

插槽技术是Vue.js中重要的组件化特性之一,为我们提供了灵活的组件化开发方式,通过合理使用插槽,我们可以轻松地定制和扩展组件的功能,使组件的可复用性和灵活性大大提高。

能力一般,水平有限,本文可能存在纰漏或错误,如有问题欢迎指正,感谢你阅读这篇文章,如果你觉得写得还行的话,不要忘记点赞、评论、收藏哦!祝生活愉快!

到此这篇vue3.0 插槽(vue 插槽详解)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • map转json字符串再转回map(map转为json字符串)2026-01-22 17:27:12
  • pcie5.0的显卡有哪些(pcie5.0对显卡有提升吗)2026-01-22 17:27:12
  • autohotkey自动登录账号密码(autojs自动登录)2026-01-22 17:27:12
  • junit5怎么下载(junit4.12下载)2026-01-22 17:27:12
  • js 实现深拷贝的方法(js深拷贝json parse)2026-01-22 17:27:12
  • js数组方法中,哪些不能改变自身数组(js数组方法中,哪些不能改变自身数组,返回值)2026-01-22 17:27:12
  • spss27使用教程(spss22.0使用教程)2026-01-22 17:27:12
  • vue3插槽(vue3插槽传递)2026-01-22 17:27:12
  • 多级列表3.1怎么设置(多级列表2.1怎么设置)2026-01-22 17:27:12
  • idea tomcat8.5乱码(idea tomcat乱码怎么解决)2026-01-22 17:27:12
  • 全屏图片