vue组件中的data为什么必须是一个函数?

组件是可复用的实例;当每次复用这个组件的时候,返回的都是一个新的data,如果单纯的写出对象的形式,那么所有的组件实例共用一个data,造成数据污染。

<template>
  <div class="DateCom">
    <input type="text" v-model="age">
    <p>{{ age }}</p>
  </div>
</template>

<script>
const obj = {age: 18}
export default {
  name: "DateCom",
  data() {//局部作用域
    return obj
  }
}
</script>

在这里插入图片描述
通过上面的例子可以看出,多个组件引入了这个组件作为子组件,在视图层修改输入框的数据,视图层中所有输入框的数据都发生了改变;如果每个父组件有属于自己的逻辑,修改了以后,也会对其他父组件造成影响,因为他们共用了一个data。

data() {//局部作用域
     return {
       age: 18
     }
   }

在这里插入图片描述
data作为函数每次一个新返回对象,修改视图层的输入框值,可以看出其他引入了这个组件的父组件中的输入框的值是未发生改变的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值