三、Vue全局与局部组件、父组件与子组件

概念:

组件扩展了HTML代码,组件系统让我们可以用独立可复用的小组件来构建大型应用

组件component声明中有:

  1. template模板,<template> 可复用的HTML代码<template>

  2. 引用模板的JavaScript代码

  3. css样式代码

  4. 如果声明的是子组件,则可以声明一个props接收父组件传递的数据

全局组件

全局注册的组件可以用在其被注册之后的任何 通过new Vue建立的实例,和任何子组件中

全局注册组件方式:Vue.component("name",{template:''})声明,无须再new Vue的实例中赋值

局部组件

局部组件是要通过声明变量的方式,在变量里声明一个template,由于局部组件只能在被引用的实例中使用,所以需要在相应实例中加入component的组件声明,声明里边要引入template所在的变量名

html代码:显示全局组件all和局部组件child:

<div id="app">

    <all></all>

    <child><child>

  </div>

JavaScript代码


<script>

// 注册局部组件

  var Child = {

    template:'<h1>局部组件!<h1>'

  }

  //注册全局组件

  Vue.component('all', {

    template: '<h1>全局组件!</h1>'

  })

  Vue.component('anchored-heading', {

  template: '#anchored-heading-template',

  props: {

    level: {

      type: Number,

      required: true

    }

  }

})

  // 创建根实例

  new Vue({

    el: '#app',

    components:{

      'child':Child

    }

  })

<script>

 

父组件向子组件通过prop传递数据

  • 父组件可以在组件里引用子组件

<div id="example">

    <parent></parent>

  </div>

<script>

//注册子组件

var childNode = {

  template: '<div>childNode</div>',

}

//注册父组件,由于引用了局部子组件,所以父组件需要用component{}对子组件声明

var parentNode = {

  template: `

  <div class="parent">

    <child></child>

    <child></child>

  </div>

  `,

  components: {

    'child': childNode

  }

};

//新建实例,对局部父组件进行声明

new Vue({

  el: '#example',

    components: {

    'parent': parentNode

  } 

})

</script>

 

  • 子组件不能再模板里引用父组件的数据,所以要通过props选项使用父组件传来的数据

子组件需要显示的用props选项声明要接收父组件的数据

静态Prop通过为子组件在父组件中的占位符添加特性的方式来达到传值的目的

单向下行绑定:父级 prop 的更新会向下流动到子组件中,但是反过来则不行。这样会防止从子组件意外变更父级组件的状态,从而导致你的应用的数据流向难以理解。

比如下面的例子就是div的DOM节点作为父组件将数据“你好啊”传入子组件里

<div id ="div1">

<blog-post>  你好啊 </blog-post>

</div>

<script>

Vue.component('blog-post',{

  props:['title'],

  template:'<h3>{{title}}<h3>'

})

new Vue({

        el:"#div1"

    })

</script>

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值