其他分享
首页 > 其他分享> > vue中data为什么是一个函数?

vue中data为什么是一个函数?

作者:互联网

最近在学习vue的过程中,遇到了一个问题,组件中的data为什么定义为一个函数?思考了一会写了两个demo,不知道是不是可以解释这个问题,如下

vue中组件嵌套可以用一些简单的对象嵌套来模拟, 这里模仿a组件在b组件中的复用

demo1

<script>
  var a = {

    data: {
      name: 1,
    },
  }

  var b = {
    vue1:{a},
    vue2:{a},
  }
  console.log(b.vue1.a.data.name);//1

  b.vue1.a.data.name=5;  //修改vue1对象的name值

  console.log(b.vue1.a.data.name);//5

  console.log(b.vue2.a.data.name);//5

</script>

这里可以很清晰的看见修改vue1组件中的data数据对象的name值会对vue2中的值产生影响,这样的情况在组件复用的过程中显然是不被允许的

解决方法就是将a组件中的data数据对象修改成返回一个匿名对象的方法,b组件使用a组件的数据需要调用一次data方法来初始化数据

demo2

<script>
  var a = {
    data() {
      return {
        name: 1,

      }
    }
  }

  console.log(a);
  var b = {
    vue1: a.data(),
    vue2: a.data(),
  }

  console.log(b.vue1.name);//1
  console.log(b.vue2.name);//1

  b.vue1.name = 5;

  console.log(b.vue1.name);//5
  console.log(b.vue2.name);//1
</script>

demo2中的vue1和vue2更像是对组件的一种拷贝重构,所以属性两者是独立的,vue中具体的实现可能不大相同,没有研究过,仅供参考提供一种思路,如有不足请指正,哈哈哈哈

标签:log,vue,console,函数,vue1,组件,data,name
来源: https://blog.csdn.net/m0_57789598/article/details/121745342