vue中的子父组件的data配置项区别

关注Avue表单设计器的使用: 【Avue表单设计器的使用技巧】

关注Avue企业级开发应用官方源代码: 官方源代码

一,首先我们自定义一个子组件,并进行注册: 

// 定义一个名为 button-todo-counter 的新组件
Vue.component('button-todo-counter', {
  data: function () { // 每点击一次,就会返回一个新的data函数实例;
    return {
      count: 0
    }
  },
  template: '<button v-on:click="count++">你单击了 {{ count }} 次.</button>'
})

组件是可复用的 Vue 实例,且带有一个名字:在这个例子中是 <button-todo-counter>。我们可以在一个通过 new Vue 创建的 Vue 根实例中,把这个组件作为自定义元素来使用: 

接下来把定义的子组件作为父组件的一个元素来使用:

<div id="components-demo">
  <button-todo-counter></button-todo-counter>  <!--子组件作为父组件div的一个按钮使用-->
</div>
new Vue({ el: '#components-demo' })

 因为组件是可复用的 Vue 实例,所以它们与 new Vue 接收相同的选项,例如 datacomputedwatchmethods 以及生命周期钩子等。仅有的例外是像 el 这样根实例特有的选项。

复用三次

<div id="components-demo">
  <button-todo-counter></button-todo-counter>
  <button-todo-counter></button-todo-counter>
  <button-todo-counter></button-todo-counter>
</div>

注意当点击按钮时,每个组件都会各自独立维护它的 count。因为你每用一次组件,就会有一个它的实例被创建

二: data 必须是一个函数  在子组件中配置项是一个函数,该函数每使用一次,就会创建一个新的对象, 每次创建的对象都是不同的对象;

一个组件的 data 选项必须是一个函数,因此每个实例可以维护一份被返回对象的独立的拷贝:

data: function () {
  return {
    count: 0
  }
}

这样单击每一个按钮,各组件单独维护其属性count,互不影响:

   如下图:

                       

如果当我们定义这个 <button-todo-counter> 组件时,这样直接提供一个对象:

 

data: {
  count: 0
}

点击任何一个按钮就可能会像如下代码一样影响到其它所有实例

 

所以,在vue中,父组件的配置项data :{配置项1: value1}, 而子组件配置项data : function() {return {配置项1: value1}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值