vue 组件的data属性

当我们定义这个 <button-counter> 组件时,你可能会发现它的 data 并不是像这样直接提供一个对象:

data: {
  count: 0
}

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

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

案例:

 Vue.component("zidingyi", {
            template: "#tpl",
            // 组件的data不能直接定义成对象  而是一个函数 让这个函数返回一个对象的定义代码
            data: function () {
                return {
                    name: "小白"
                }
            }
        })
         var v1 = new Vue({
            el: "#app",
            data: {}
        })
<div id="app">
        <zidingyi></zidingyi>
        <zidingyi></zidingyi>
</div>
<template id="tpl">
        <h1>我是一个{{name}}</h1>
</template>

【注】
为什么要返回一个对象的定义呢?
因为Vue在解析组件的时候会执行data的函数,如果返回的是一个其他地方的对象,那么这第一个组件的实例使用的是这个对象。如果该组件又有了一个实例,这个新实例依旧会使用同一个对象来作为自己的数据,那么就意味着一个数据对象对应两个组件。
如果返回的是对象的字面量定义代码,每当这个函数执行就会在内存中生成一个新的对象, 也就意味着每一个组件对应一个属于自己的数据对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值