vue 插槽

Posted webHYT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue 插槽相关的知识,希望对你有一定的参考价值。

1、作用:让父组件可以向子组件指定位置插入html结构,也是一种组件间的通信方式,适用于父组件==》子组件

2、分类:默认插槽、具名插槽、作用域插槽

3、使用方式:

(1)、默认插槽

父组件中:
    <Category>
      <div>html结构 </div>
    </Category>

子组件中:
<template> <div> <!-- 定义插槽 --> <slot>插槽默认内容...</slot> </div> </template>

(2)、具名插槽

父组件中:
    <Category>
      <!-- 写法一 -->
      <template slot="center">
        <div>html结构 </div>
      </template>
     
       <!-- 写法二 -->
      <template v-slot:footer>
        <div>html结构 </div>
      </template>
    </Category>

    子组件中:
    <template>
      <div>
        <!-- 定义插槽 -->
        <slot name="center">插槽默认内容...</slot>  
        <slot name="footer">插槽默认内容...</slot>  
      </div>
    </template>

3、作用域插槽

(1)理解:数据在组件自身,但是根据数据生成的结构需要组件使用者来决定。(games数据在Category组件中,但是使用数据所遍历出来的结构由App组件决定,比如:elementUI的表格scope)

(2)具体编码:

 父组件中:
    <Category>
      <template scope="scopeData">
        <ul>
          <li v-for="g in scopeData.games" :key="g"> g </li>
        </ul>
      </template>
    </Category>

    <Category>
      <template slot-scope="scopeData">
        <h4 v-for="g in scopeData.games" :key="g"> g </h4>
      </template>
    </Category>

    子组件中:
    <template>
      <div>
        <!-- 定义插槽 games是子组件data中的数据-->
        <slot :games="games">插槽默认内容...</slot>  
      </div>
    </template>

 

vue 2.6 插槽更新 v-slot 用法总结

参考技术A 引vue官方文档
之前做项目时,对插槽理解太少了,这两天学习时,才发现插槽更新用v-slot了,自己做了些简单总结,与大家分享一下~

我的理解就是
父页面在组件标签内插入任意内容,子组件内插糟slot控制摆放位置
(匿名插槽,具名插槽)

插槽一共就三大类
1.匿名插槽(也叫默认插槽): 没有命名,有且只有一个
2.具名插槽: 相对匿名插槽组件slot标签带name命名的
3.作用域插槽: 子组件内数据可以被父页面拿到(解决了数据只能从父页面传递给子组件)

用法:我的理解,匿名插糟只需要一个.(就是这些,不太复杂)
父页面:

子组件 todoList.vue

用法:我的理解,和匿名插槽比较,就是必须起名todo对应,可以有多个具名插槽.(没了~)
父页面

子组件

对 v-slot:todo 做操作:

匿名如果想用必须加上default

1.重点是slotProps接取子组件里:user="user" :test="test"类似属性的数据
父页面

子组件

父页面 (子组件不变 显示一样)

参数值替换名字(可以后看)

独占默认插槽缩写(可以后看)
感觉没什么机会用,限制条件太多

在用上v-slot之后 只需要考虑好
1.是否需要命名(匿名插槽,具名插槽)
2.父页面是否需要取存在子页面的数据(作用域插槽)

可以试一下,便于理解~
父页面

子组件

以上是关于vue 插槽的主要内容,如果未能解决你的问题,请参考以下文章

大前端之vue插槽slot

Vue 作用域插槽

vue插槽slot理解

vue 2.6 插槽更新 v-slot 用法总结

vue过滤器,slot插槽

vue2升级vue3:Vue2/3插槽——vue3的jsx组件插槽slot怎么处理