vue slot插件理解及具体使用

vue slot插件的理解:

父组件可以通过在子组件标签上携带属性传递给子组件,子组件通过props接收即可使用。
1.能在子组件标签之间传递信息吗,当然是可以的,这时子组件通过<slot></slot>标签接收,所以slot插件的本质是父组件向子组件传递展示dom,而非data。

<children><div>我是dom</div></children>

<template>
  <div>
    我是children组件
    <slot></slot>
  </div>
</template>

最终展示

我是children组件
我是dom

2.上面方式也可以理解为父组件给子组件传递具体的dom,还有种情况当父组件没有传递dom时,子组件可以设置后备dom,就是父组件传dom,优先渲染父组件传过来的,反之则渲染自己的,相当于占位了。

<children></children>

<template>
  <div>
    我是children组件
    <slot><div>我是dom</div></slot>
  </div>
</template>

最终展示

我是children组件
我是dom

3.上述说明的是单个插槽情况,也即父组件向子组件传递dom,这里说明多个插槽情况,父组件可以向子组件对应部位传递多个dom,而这些dom可以对应的传递给子组件对应位置。

<children>
  <template v-slot:dom1>
    <div>我是dom1</div>
  </template>
  <template v-slot:dom2>
    <div>我是dom2</div>
  </template>
  <template v-slot:dom3>
    <div>我是dom3</div>
  </template>
</children>

<template>
  <div>
    我是children组件
    <slot name="dom1"><div>我是dom1</div></slot>
    <slot name="dom2"><div>我是dom2</div></slot>
    <slot name="dom3"><div>我是dom3</div></slot>
  </div>
</template>

最终展示

我是children组件
我是dom1
我是dom2
我是dom3

4.先总结下,插槽其实就是放在组件里的一种占位符,父组件更改占位符的内容,在多个占位符的情况下,也可以对应更改多个占位符的内容,同时,组件还可以向父组件提供数据接口,供父组件选择性的展示占位符的的数据,也即最后要介绍一的一种作用域插槽。

<children>
  <template v-slot:defaule="slotProps">
    <div>我是dom1{{slotProps.user.firstName}}</div>
  </template>
</children>

<template>
  <div>
    我是children组件
    <slot :user="user"><div>我是dom1{{user.lastName}}</div> 
   </slot>
  </div>
</template>

data() {
    return {
      user: {
        firstName: 'zhang',
        lastName: 'san
      }
    }
  }

最终展示

我是dom1zhang
这里需要注意的是为什么需要用slotProps,因为插槽传过来的是一个大对象,所以需要slotProps转一下。
{ "user": { "firstName": "zhang", "lastName": "san" } }

当然你也可以对象解构一下。这样使用。

<children>
  <template v-slot:defaule="{user}">
    <div>我是dom1{{user.firstName}}</div>
  </template>
</children>

当只有一个默认插槽时,还可以简写。

<children v-slot="{user}">
  <div>我是dom1{{user.firstName}}</div>
</children>

5.插槽使用
插槽是对公共组件的进一步公共抽象,以前的公共组件只是同一业务上的代码抽象,可面对公共组件里需要解决的差一点可以用插槽去解决。
以前是子组件一股脑展示自己的全部,现在是子组件交出部分权力让父组件去填充或替换,反之就用自己的。
现在可以试着这样想页面,最开始按基本的布局搭好架子,放好插槽占位,然后具体结构根据业务需要填充,即在业务组件上写结构,当发现结构可能会根据不同业务变化时继续写插槽占位,由上一级的组件提供具体业务内容,自此向上开发。
这里面实际上带开发哲学的味道,一种是有了页面去拆分抽象自上而下的开发,另一种是只有结构一点点往上堆叠自下往上的开发。
自下而上的开发有点向后端的接口,为页面就行接口实现类,这样在可复用的同时也对代码进行了规范。
原子性的组件只能重复写,除非是借助低代码平台来组装页面。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容