组件通信、插槽

88 阅读1分钟

组件通信

  1. 父传子:父组件给子组件绑定一个属性,子组件使用props接收
  2. 子传父:父组件给子组件绑定一个事件,子组件使用$emit去调用事件函数
  3. 兄弟:所有的子组件通过同一个父组件进行数据的交换
  4. .sync 伪数据双向绑定:属性修饰符,子组件使用固定语法调用this.$emit('update:xx',val)
  5. v-model 数据双向绑定:会向子组件注入一个value属性和input事件
  • $root:获取根实例对象
  • $parent:获取直接父组件实例对象
  • $children:直接子组件实例集合
  • $refs:获取子组件实例集合
  1. evenBus中央事件池,基于new了一个vue实例对象
  2. 高级用法
  • $sttrs向后代传递了样式之外的所有属性
  • $listeners向后代传递函数
  1. 大型的数据共享:vuex

内置组件

component 动态加载组件--动态加载组件

  1. 这个组件必须要有一个is属性,用来加载对应的组件名称
  2. 为了满足需要大量手写自定义组件的场景,实现tab选项卡

keep-alive 缓存组件-缓存组件的状态

  1. 把组件的所有被改变的状态都会存储起来
  2. 组件属性:exclude 把不想被缓存的组件名字写入,该组件就不会被缓存
  3. 组件属性:include 只缓存被包含的组件,其他不写入组件名字的组件则不会被缓存

slot 插槽

  1. 匿名插槽:无论组件内部被插入任何内容,都会被slot标签接收,常用语纯静态的可复用的dom结构中
  2. 具名插槽:父组件使用template标签使用v-slot:name加名字,插槽组件使用slot标签的name属性接收
  3. 作用域插槽:父组件在template标签使用v-slot:name='接收值'子组件在slot标签绑定属性传参