1.vue中组件是用来复用的,为了防止data复用,将其定义为函数。
2.因为当 data 是函数时,组件实例化的时候这个函数将会被调用,返回一个对象,计算机会给这个对象分配一个内存地址,实例化几次就分配几个内存地址,他们的地址都不一样,所以每个组件中的数据不会相互干扰,改变其中一个组件的状态,其它组件不变
3.如果data是对象时,这些实例用的是同一个构造函数,由于JavaScript的特性所导致,所有的组件实例共用了一个data,就会造成一个变了全都会变的结果。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <div id="app"> <cpn1></cpn1> <cpn1></cpn1> <cpn1></cpn1> <hr> <cpn2></cpn2> <cpn2></cpn2> <cpn2></cpn2> </div> <template id="cpn1"> <div> <button @click="count++">+</button> <h2>{{count}}</h2> <button @click="count--">-</button> </div> </template> <template id="cpn2"> <div> <button @click="count++">+</button> <h2>{{count}}</h2> <button @click="count--">-</button> </div> </template> <script src="vue.js"></script> <script type="text/javascript"> var obj = { count:0 } const vm = new Vue({ el:"#app", data(){ return{ } }, components:{ cpn1:{ template:"#cpn1", data(){ return obj } }, cpn2:{ template:"#cpn2", data(){ return{ count:0 } } } } }) </script> </body> </html>
最后
以上就是成就帆布鞋最近收集整理的关于Data为什么必须是函数1的全部内容,更多相关Data为什么必须是函数1内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复