您的位置:首页 > 其它

自定义(组件、指令、事件)和组件通信

2019-05-29 21:08 253 查看

1. 自定义组件( 插件 )

案例: 封装一个 Loading 组件
Loading是用来做什么的?
提升用户体验
loading使用方式很多

  1. 第三方的ui库/组件库
  2. 自定义封装 过程:
  3. 创建一个目录文件夹,称之为Loading
  4. 在loading中创建一个叫做component目录,用来放模板
  5. 在Loading目录下创建一个index.js
~ import Vue from 'vue'
import tpl from './component/index.html'
const Loading = {
// 自定义封装组件,这个loading对象中必须有一个关键key
install () {
Vue.component( 'Loading', {
template: tpl
})
}
}

export default Loading
  1. 使用:

2. 自定义指令

自定义指令

  1. 指令是用来操作DOM

  2. 指令的使用形式: 属性

  3. 自定义指令方式有两种:

      全局注册指令
      Vue.directive( 指令的名称, 指令的配置项 )
    • 局部注册指令
      directives: {
      ‘指令名称’: 指令的配置项
      }
      研究:

    指令的配置项提供了5个钩子函数

    以及钩子函数中的参数

    console.log( 'el',el  ) // el 指令绑定的元素
    console.log( 'binding',binding ) // 指令的详细信息
    console.log( 'vnode', vnode )  // 当前绑定元素的信息
    console.log( 'oldVnode',oldVnode ) // 上一个绑定元素的信息

案例: 打开网页,input自动获得焦点

3. 自定义的事件

代码示例:

v-on:click = 'aa'
v-on:yyb = 'aa'
v-on:before-enter: ''
  • 自定义封装组件的使用
  • 自定义事件的第二种使用形式

4. 组件通信 – 单项数据流 >9种

  1. 父子组件通信 props接收
  • 子父组件通信
      自定义事件
    1. 父组件将一个方法直接通过单向数据绑定的形式传递给子组件,子组件通过props接收,然后直接使用
    2. 父组件可以将一个对象型的数据传递给子组件,子组件修改了这个数据,父组件也同样会修改
        这个形式违反了单向数据流,用的少
  • 非父子组件通信
      使用ref链绑定
    1. 使用事件总线(bus总线)
  • 多组件的状态共享 vuex
  • 多级组件通信 ) $attr( 扩展
  • vue-router
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: