1. 组件
- 组件 (Component) 是 Vue.js 最强大的功能之一
- 组件可以扩展 HTML 元素,封装可重用的代码
1.1 组件注册
全局注册
- Vue.component('组件名称', { })
- 全局组件注册后,任何vue实例都可以用
注意:
- data值必须是一个函数,同时这个函数要求返回一个对象
- 组件模板必须是单个根元素
- 组件模板的内容可以是模板字符串(es6语法,需要浏览器提供支持)
补充:组件命名方式有短横线“ - ”和驼峰式2种
局部注册
- 只能在当前注册它的vue实例中使用
1.2 Vue组件之间传值
父组件向子组件传值
- 以属性的形式绑定值到子组件身上,一种是静态的值,一种是动态绑定(:)
- 子组件用属性props,以数组方式接收(单向数据传送)
- 在props中使用驼峰形式,模板中需要使用短横线的形式(html不区分大小写)字符串形式的模板中没有这个限制
{{pmsg}}
子组件向父组件传值
- 子组件用
$emit()
触发事件 -
$emit()
第一个参数为 自定义的事件名称 第二个参数为需要传递的数据 - 父组件用v-on 监听子组件的事件
{{pmsg}}
兄弟之间的传递
- 兄弟之间传递数据需要借助于事件中心,通过事件中心传递数据
- 提供事件中心 var hub = new Vue()
- 传递数据方,通过一个事件触发hub.$emit(方法名,传递的数据)
- 接收数据方,通过mounted(){} 钩子中 触发hub.$on()方法名
- 销毁事件 通过hub.$off()方法名销毁之后无法进行传递数据
父组件
1.3 组件插槽
- 作用:父组件向子组件传递内容
- 组件的最大特性就是复用性,而用好插槽能大大提高组件的可复用能力
匿名插槽
有bug发生
有一个警告