vue中组件的data为什么是一个函数
vue中组件的data为什么是一个函数
1. 前言 在学习vue
的时候,一直纳闷一件事:组件的data数据为什么必须要以函数返回的形式,为什么不是简单的对象形式呢?遂带着问题去翻官方文档,文档中自然也写明了这么做的原因,本篇博文以官方文档给出的原因为基础,并加上具体的例子,来阐述这么设计的原因。
2.正文 组件是可复用的vue
实例,一个组件被创建好之后,就可能被用在各个地方,而组件不管被复用了多少次,组件中的data
数据都应该是相互隔离,互不影响的,基于这一理念,组件每复用一次,data
数据就应该被复制一次,之后,当某一处复用的地方组件内data
数据被改变时,其他复用地方组件的data
数据不受影响,如下面这个例子:
按钮被点击了{{ count }}次
.title {
background-color: red
}
该组件被复用了三次,但每个复用的地方组件内的
count
数据相互不受影响,它们各自维护各自内部的count
。![vue中组件的data为什么是一个函数](https://img.it610.com/image/info8/7ce07501407541de9360349146da6cd1.gif)
文章图片
能有这样效果正是因为上述例子中的
data
不是一个单纯的对象,而是一个函数返回值的形式,所以每个组件实例可以维护一份被返回对象的独立拷贝,如果我们将上述例子中的data
修改为:data : {
count: 0
}
那么就会造成无论在哪个组件里改变了
count
值,都会影响到其他两个组件里的count
。![vue中组件的data为什么是一个函数](https://img.it610.com/image/info8/b7bb6de3e63d4cb68ea4045053a21ec3.png)
文章图片
这是因为当
data
如此定义后,这就表示所有的组件实例共用了一份data
数据,因此,无论在哪个组件实例中修改了data
,都会影响到所有的组件实例。【vue中组件的data为什么是一个函数】
3.总结 组件中的
data
写成一个函数,数据以函数返回值形式定义,这样每复用一次组件,就会返回一份新的data
,类似于给每个组件实例创建一个私有的数据空间,让各个组件实例维护各自的数据。而单纯的写成对象形式,就使得所有组件实例共用了一份data
,就会造成一个变了全都会变的结果。(完)
推荐阅读
- 热闹中的孤独
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- vue-cli|vue-cli 3.x vue.config.js 配置
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募