Vue 1.3 组件 插槽 + 知识点补充

189 阅读2分钟

组件-插槽

当组件某一部分的标签不确定时, 可以使用插槽,它可以让组件更灵活、复用性更高、功能更强大。

基本语法

  • 1 在子组件中需要用到插槽的位置,使用<slot></slot>占位
  • 2 使用组件时,在组件标签中定义满足要求的标签 栗子 <Pannel>自定义变量<Pannel>

具名插槽

1 可以让一个组件内,有多处自定义标签的能力

2 使用方法:

  • 在子组件中使用<slot></slot>占位,并设置name属性
  • 使用组件时 ,在组件标签内使用<template></template>标签中 结合v-slot:指令来设置name值
<Pannel>
  <template v-slot:title></template>
</Pannel>
  • v-slot: 可以简写为 #
<Pannel>
  <template #title></template>
</Pannel>

作用域插槽

1 可以在使用组件时 访问子组件里的数据

2 使用方法 :

  • 在子组件中使用<slot></slot>占位 并使用 v-bind绑定数据给 slot标签
<slot :row="obj"></slot>
  • 使用组件时, 在 <template></template> 标签上使用 v-slot="变量名" 取值使用,(如果有name值可以简写成 #自定义名=“scope” 调用数据时用 scope.row)
<Pannel>
  <template v-slot="scope"></template>
</Pannel>
scope 是自定义变量
scope:{row:obj}

自定义指令

当Vue自带的指令 无法高效的满足开发需求时 可以使用自定义指令

  • 语法如下:
全局注册
Vue.directive(
    指令名 {
  inserted(el) {
    // 当元素插入到 DOM 时调用
  }
})
局部注册
在组件内和 data / methods 平级的地方, 设置 directives, 属性名就是指令名, 属性值就是指令配置对象, 其他同上

组件知识点补充:

  • ¥refs 可以用来获取原生DOM 和 组件对象,也可以使用组件对象方法。语法:1 给组件标签添加 ref属性 。2 this.$refs.ref属性名
  • nextTick可以用来获取更新后的DOM元素,当DOM更新后会触发回调函数。语法:this.nextTick 可以用来获取 更新后的DOM元素,当DOM更新后会触发回调函数。 语法: this.nextTick(() => {}) 或 await this.$nextTick()// 操作 DOM
  • v-model 的原理 :1. 给组件使用 v-bind 绑定 value 属性 2. 给组件使用 v-on 绑定 input 事件