VUE中data配置项详细解析

 更新时间:2023年02月27日 11:25:51   作者:三千洲  
data属性是Vue实例的数据对象,可以绑定的是对象或者是函数,下面这篇文章主要给大家介绍了关于VUE中data配置项详细解析的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

1.data是什么?有什么作用?

data是Vue实例中一个配置项。用来存储vue实例或者组件里面的数值。

2.data的存在位置差异(data配置项存在于两种位置)

2.1.当data存在于Vue实例中时,它既可以是以一个对象的形式(键值对)。

在Vue的data属性定义以下数据类型:

1、字符串

2、整数

3、数组

4、对象

5、对象数组

data: {
                    // 定义字符串
                    name: "谷哥的小弟",
                    // 定义整数
                    number:9527,
                    // 定义数组
                    hobby:["篮球","足球","击剑"],
                    // 定义对象
                    user:{id: 21, name: "zxx", age: 50},
                    // 定义对象数组
                    users:[
                        {id: 21, name: "zxx", age: 50},
                        {id: 22, name: "zxc", age: 51},
                        {id: 23, name: "zcc", age: 52},
                    ]
                }

2.1也可以是一个函数的形式。

const app = new Vue({
    el:"#app",
    // 对象格式
    data:{
        foo:"foo"
    },
    // 函数格式
    data(){
        return {
             foo:"foo"
        }
    }

2.2当data存在于组件中时,它只能是一个函数

Vue.component('component1',{
    template:`<div>组件</div>`,
     data(){
        return {
             foo:"foo"
        }
    }
})

3.为什么在组件中data只能是一个函数呢?

Vue的官方文档中也有说组件中的data必须使用函数否则会报错,这是为什么呢?

这就要追溯到我们的Jvascript的对象了,众所周知Javascript的对象属于引用数据类型,如果将一个对象赋值给另一个对象他并不是将该对象的值赋给新变量,而是在内存中将起初申明的对象去指向这个新对象。

let obj = {
    name: "小明",
    age:19
}
let obj1 = obj 
obj.name = "小红"
// 此时   obj1.name == "小红"
// 并且   obj.name == "小红"

这种情况下如果修改obj1中的属性,obj的数据也会发生变化

为什么要提到这个呢 我们就要理解一下组件 其实就类似原生js的一个构造函数

我们去调用的组件就是相当于原生js我们去实例化的对象加入我们申明一个构造函数 person并改变其中的值

    function Person(name,age){
        this.name = nmae;
        this.age = age ;
        this.race = "汉族"
    }
    let ming = new Person("xiaoming",19)
    let hong = new Person("xiaohong",20)
    console.log(ming)
    console.log(hong)
    // 此时如果我们把小明的名族改了
    ming.race="维吾尔族"
    console.log(ming)
    console.log(hong)
    // 我们再去查看一下会发现,小明小红都变成了维吾尔族

所以,为了防止对象的变量修改,在组件的data必须要用函数的形式存在,因为只有函数有函数的封闭作用域,这也就是为什么Vue的设计者为什么在组件中使用了一个data却再次return了一个对象。

总结

到此这篇关于VUE中data配置项详细解析的文章就介绍到这了,更多相关VUE data配置项内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue parseHTML 函数源码解析AST基本形成

    vue parseHTML 函数源码解析AST基本形成

    这篇文章主要为大家介绍了vue parseHTML 函数源码解析AST基本形成,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • vue在mounted中window.onresize不生效问题及解决

    vue在mounted中window.onresize不生效问题及解决

    这篇文章主要介绍了vue中在mounted中window.onresize不生效问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue3 hook重构DataV的全屏容器组件详解

    vue3 hook重构DataV的全屏容器组件详解

    这篇文章主要为大家介绍了vue3 hook重构DataV的全屏容器组件详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • vue实现购物车案例

    vue实现购物车案例

    这篇文章主要为大家详细介绍了vue实现购物车案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • 解决vue router组件状态刷新消失的问题

    解决vue router组件状态刷新消失的问题

    这篇文章主要介绍了vue router组件状态刷新消失的问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08
  • 用Vue.js实现监听属性的变化

    用Vue.js实现监听属性的变化

    响应系统是Vue.js的一个显著功能,修改属性,可以更新视图,这让状态管理变得非常简单且直观。这篇文章主要给大家介绍如何利用Vue.js实现观察属性的变化,有需要的朋友们可以参考借鉴,感兴趣的朋友们下面来一起看看吧。
    2016-11-11
  • Vue el-table 默认展开某一行的实例

    Vue el-table 默认展开某一行的实例

    这篇文章主要介绍了Vue el-table 默认展开某一行的实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • axios封装,使用拦截器统一处理接口,超详细的教程(推荐)

    axios封装,使用拦截器统一处理接口,超详细的教程(推荐)

    这篇文章主要介绍了axios封装使用拦截器处理接口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Vue如何使用Element-ui表单发送数据与多张图片到后端详解

    Vue如何使用Element-ui表单发送数据与多张图片到后端详解

    在做项目的时候遇到一个问题,前端需要上传表单到后端,表单数据包括文本内容和图片,这篇文章主要给大家介绍了关于Vue如何使用Element-ui表单发送数据与多张图片到后端的相关资料,需要的朋友可以参考下
    2022-04-04
  • vue3项目配置按需自动引入自定义组件unplugin-vue-components方式

    vue3项目配置按需自动引入自定义组件unplugin-vue-components方式

    这篇文章主要介绍了vue3项目配置按需自动引入自定义组件unplugin-vue-components方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03

最新评论