组件及组件间传值
全局组件
- Vue.component(“组建名字”,{组件配置项})
- 定义全局组件,只要在vue的作用范围内就可以使用该组件
- 组件名字不能使用html标签
- 标签名字为驼峰式写法(headerCom),调用时可以使用 header-com
- 组件中可以使用vue实例中除el的所用属性(配置项)
- 组件可以复用,如果data为一个对象,那么所有的组件实例的data都指向同一个data对象,所以在data设置时,组件data设计为一个函数,通过函数的调用获得data对象
局部组件
- 通过components定义在vue实例内
组件间通信
父子通信
- props: [‘title’,’data’]
- 组件属性:外部属性 内部属性 计算属性
- 外部属性:组件内部只能使用不能修改
- 单向数据流:数据自顶向下的
- 子组件不能修改父组件的数据
- 父组件内 :title=”handleClick”,子组件内props:[‘title’]接收使用this.title(参数)调用 父组件内的handleClick()就能接收到该参数,从而实现子传父
vue中发布订阅模式的实现
- 自定义事件监听
- vm.$on(“事件名字”,callback) vm.$once() 只监听一次
- 触发自定义事件
- vm.$emit(“事件名字”) vm.$emit(“事件名字”,传参) 可以闯入参数 $on的回调可以接收该参数
- 移除事件监听
- vm.$off() 移除所有事件监听
- vm.$off(“事件名字”) 移除指定事件监听
- vm.$off(“事件名字”,callback) 移除指定事件指定的回调函数监听
- 事件总线 bus(new一个Vue实例将,将事件挂载到该实例上从而实现兄弟组件间的通信) 实现兄弟组件间的通信 通过订阅发布模式
项目生成
vue init webpack-simple my-app
cd my-app
npm i