Vue17_组件的data

前言:组件无法访问Vue实例中的数据,因为组件是一个单独功能模块的封装,组件有属于自己的Html模板,因此也有属于自己的数据data

1. 组件的data

组件自己的数据存放在data中:

  • 组件的data属性必须是一个函数
  • 而且这个函数必须返回一个对象,对象内部保存着数据

在这里插入图片描述

PS. 组件很像一个Vue实例,很多Vue实例有的东西组件都有

2. 为什么组件中的data必须是函数而不是对象

为了防止组件多次使用时因共享同一个数据而导致“ 一改全改 ”,使用函数在return时会返回一个新的对象,使得各个组件的数据独立

<body>
  <div id="app">
    <mycpn></mycpn>
    <mycpn></mycpn>
    <mycpn></mycpn>
  </div>

  <template id="tem">
    <div>
      <h2>当前计数为:{{ msg }}</h2>
      <button @click="decrement">-</button>
      <button @click="increment">+</button>
    </div>
  </template>

</body>


<script>
  // 1. 全局组件
  // Vue.component('mycpn', {
  //   template: "#tem",
  //   data() {
  //     return {
  //       msg: 0
  //     }
  //   },
  //   methods: {
  //     decrement() {
  //       this.msg--
  //     },
  //     increment() {
  //       this.msg++
  //     }
  //   },
  // })
  new Vue({
    el: "#app",
    // 2. 局部组件
    components: {
      'mycpn': {
        template: "#tem",
        data() {
          return {
            msg: 0
          }
        },
        methods: {
          decrement() {
            this.msg--
          },
          increment() {
            this.msg++
          }
        }
      }
    }
  })
</script>

效果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值