组件通信、插槽
组件通信
- 父传子:父组件给子组件绑定一个属性,子组件使用props接收
- 子传父:父组件给子组件绑定一个事件,子组件使用
$emit去调用事件函数
- 兄弟:所有的子组件通过同一个父组件进行数据的交换
- .sync 伪数据双向绑定:属性修饰符,子组件使用固定语法调用
this.$emit('update:xx',val)
- v-model 数据双向绑定:会向子组件注入一个value属性和input事件
$root:获取根实例对象
$parent:获取直接父组件实例对象
$children:直接子组件实例集合
$refs:获取子组件实例集合
evenBus中央事件池,基于new了一个vue实例对象
- 高级用法
$sttrs向后代传递了样式之外的所有属性
$listeners向后代传递函数
- 大型的数据共享:vuex
内置组件
component 动态加载组件--动态加载组件
- 这个组件必须要有一个is属性,用来加载对应的组件名称
- 为了满足需要大量手写自定义组件的场景,实现tab选项卡
keep-alive 缓存组件-缓存组件的状态
- 把组件的所有被改变的状态都会存储起来
- 组件属性:exclude 把不想被缓存的组件名字写入,该组件就不会被缓存
- 组件属性:include 只缓存被包含的组件,其他不写入组件名字的组件则不会被缓存
slot 插槽
- 匿名插槽:无论组件内部被插入任何内容,都会被slot标签接收,常用语纯静态的可复用的dom结构中
- 具名插槽:父组件使用template标签使用v-slot:name加名字,插槽组件使用slot标签的name属性接收
- 作用域插槽:父组件在template标签使用v-slot:name='接收值'子组件在slot标签绑定属性传参