Vue基础-day-03(组件注册,父子组件之间传值,组件插槽)

组件

  • 组件 (Component) 是 Vue.js 最强大的功能之一
  • 组件可以扩展 HTML 元素,封装可重用的代

组件注册

全局注册

  • Vue.component('组件名称', { }) 第1个参数是标签名称,第2个参数是一个选项对象
  • 全局组件注册后,任何vue实例都可以用


Vue.component("组件的名称(button-click)",{
data:function(){
return{
       count:0;
            }
      },
template:'  '
})

组件注意事项

  • 组件参数的data值必须是函数同时这个函数要求返回一个对象
    分析函数与普通对象的对比
  • 组件模板必须是单个根元素(必须有父元素)
    分析演示实际效果
  • 组件模板的内容可以是模板字符串
    模板字符串可以使用(支持ES6语法)

-组件命名方式

  • 短横线方式
    Vue.compoent('my-compoent',{ })
  • 驼峰方式
    Vue.component("MyComponent",{ })
 

局部注册

  • 只能在当前注册它的Vue实例中使用
    var componentA={ }
    var componentB={ }
    var componentC={ }
    new Vue({
    el:' #app ',
    components:{
    "componenta":componentA,
    "componentb":componentB,
    "componentc":componentC
    }
    })
 

Vue组件之间传值

父组件向子组件传值

  • 父组件发送的形式是以属性的形式绑定值到子组件身上。
  • 然后子组件用属性props接收
  • 在props中使用驼峰形式,模板中需要使用短横线的形式字符串形式的模板中没有这个限制

组件内部通过props接收传递过来的值
Vue.component(" menu-item",{
props:[" title"],
template:'

{{title}}
'
})
父组件用过属性将值传递给子组件

props属性名规则

  • 在props中使用驼峰形式,模板中需要使用短横线的形式,
  • 字符串形成的模板中没有这个限制
{{pmsg}}

子组件向父组件传值

  • 子组件用$emit()触发事件
  • $emit() 第一个参数为 自定义的事件名称 第二个参数为需要传递的数据
  • 父组件用v-on 监听子组件的事件

    子组件触发事件
{{pmsg}}

兄弟之间的传递

  • 兄弟之间传递数据需要借助于事件中心,通过事件中心传递数据
  • 提供事件中心 var hub = new Vue()
  • 传递数据方,通过一个事件触发hub.$emit(方法名,传递的数据)
  • 接收数据方,通过mounted(){} 钩子中 触发hub.$on()方法名
  • 销毁事件 通过hub.$off()方法名销毁之后无法进行传递数据
 
父组件

组件插槽

  • 组件的最大特性就是复用性,而用好插槽能大大提高组件的可复用能力
  • 匿名插槽
  • Vue.component(' alter-box',{
    templat:
    Error!

    })
 
有bug发生 有一个警告

具名插槽

  • 具有名字的插槽
  • 使用 中的 "name" 属性绑定元素

  

标题信息

主要内容1

主要内容2

底部信息信息

主要内容1

主要内容2

作用域插槽

  • 父组件对子组件加工处理
  • 既可以复用子组件的slot,又可以使slot内容不一致

你可能感兴趣的:(Vue基础-day-03(组件注册,父子组件之间传值,组件插槽))