vue学习的一系列,全部来自于表哥---表严肃,是我遇到过的讲课最通透,英文发音最好听的老师,想一起听课就去这里吧
把一段经常要用的东西封装成一个组件,就可以重复使用它,很方便的扩充它。
组件具有可重用性、可维护性。
1组件定义
Vue.component('组件名称',{
template:'组件内容',
methods:{
方法定义...
}
});
例:
组件
注意<alert></alert>要放在id为app的div中,就是要给组件一个域。
组件的好处就是,可以在页面中放多个,每一个的功能都相同,在页面中仅仅写了一堆标签,但其背后的功能会很强大。
2全局和局部组件
2.1全局组件
全局组件就像全局变量一样,不安全,例:
组件2-局部组件
2.2局部组件
如果一个组件确定只存在某一个域中,就要定义成局部组件,
例:在域#seg1中,定义组件components,键名就是组件名:
组件2-局部组件
可以看到,组件只在#seg1中起作用,在#seg2中报错了。
局部组件较常用。
3组件配置
实例:点赞组件,点击赞数+1,再点-1
配置组件
template中的内容可以放在 ``(反引号) 中,就可以断行了,也可以写在html中,放在template标签中:
配置组件
4组件传参
4.1父子通信(父向子传参)
Web里面的component其实就是一些自定义标签,背后有一些自定义功能。同样一个component在不同的情境下,它的表现不一定是一样的,有时希望给component传一个参数,就可以将里面的一些代码重用起来。
例:上次做的点击弹出组件,如果弹出的信息是可以变化的就更好了,
Vue提供了一个属性props,值是一个数组,里面就是要传进来的东西:
父子通信
例2:(注意转义字符)
父子通信2
4.2子父通信(子向父传参)
例:点击按钮显示余额
通过$emit触发一个事件,并传参,然后在父组件上监听这个事件
子父通信
按钮是一个子组件,外面是一个父组件,在子组件触发事件,父组件接收事件;并通过函数传递数据,注意父组件中的show_balance不加括号。
子组件向父组件喊话就是通过事件的方式。
4.3任意及平行组件间通信
实例,定义两个组件,一个组件从input输入内容,另一个组件实时显示
平行组件间通信
说明:
定义一个外部的东西-事件的调度器Event,
在输入组件xiaomei中定义keyup事件,事件调用的方法中,用Event调用$emit触发一个事件,第一个参数是事件名称,自定义,第一个参数是数据,也就是this.i_said,
在接收内容的组件dashuai中去监听这个事件,用属性mounted(代表组件初始化完成就监听,具体查看组件的生命周期),用Event.$on,第一个参数是事件的名称(上面定义的xiaomei-said-con),第二个参数是一个回调函数,函数的参数就是data,就是传过来的数据。注意Event.$on中再用this就不代表组件了,代表Event,可以在上面把this定义成一个变量me,再me.xiaomei_said=data。