总结:
1.vue中组件是用来复用,为了防止data复用,将它定义成一个函数。
2.当我们将组件中的data写成一个函数,数据是以函数返回值形式定义的,这样每复用一次data,都会返回一份新的data,拥有自己的作用域。
3.当我们组件中data写成一个对象的时候,对象是引用数据类型,它就会共用一个内存地址,造成数据污染。
组件中的data:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div id="app"><num></num><num></num><num></num></div><template id="num"><div><p>{{count}}</p><button @click="count++">点击</button></div></template>
</body>
<script src="./vue.js"></script>
<script>Vue.component('num', {template: "#num",data() {return {count: 0}}})let app = new Vue({el: "#app",})
</script></html>

效果如下:

点击不同的按钮,每个按钮完成自己的++功能,互不影响。

如果data是对象:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div id="app"><num></num><num></num><num></num></div><template id="num"><div><p>{{count}}</p><button @click="count++">点击</button></div></template>
</body>
<script src="./vue.js"></script>
<script>const counter = {count: 0}Vue.component('num', {template: "#num",data() {return counter}})const app = new Vue({el: "#app",})
</script></html>

效果图如下:

点击的时候一起发生变化,共用了一个内存地址。

组件中data为什么是个函数相关推荐

  1. 为什么Vue组件里面data必须是个函数

    Vue组件里面data必须是个函数 **首页我们先了解一个原形和原型链,每个js对象和js方法都有一个原形,js对象的是隐式原形 proto,而方法中的是显示原形prototype,下面举个例子: e ...

  2. vue中组件的data为什么是一个函数

    组件是可复用的vue实例,一个组件被创建好之后,就可能被用在各个地方,而组件不管被复用了多少次,组件中的data数据都应该是相互隔离,互不影响的,基于这一理念,组件每复用一次,data数据就应该被复制 ...

  3. 组件中data为什么是函数

    data是一个函数,但是返回的是一个对象,如果data直接是一个对象,会造成联动反应,即改变其中一个组件中的数据,其他的数据也会进行变化 <!DOCTYPE html> <html& ...

  4. 微信小程序 - 自定义组件中类似页面 onShow 的页面显示就触发的生命周期钩子函数(页面回退时更新数据常用, 例如回退页面更新子组件数据, 回退更新子组件中 data 内容)

    前言 在微信小程序中,用户回退页面触发更新数据的操作,一般都是在 页面 onShow() 中写上执行更新的函数即可. 但如果咱们把数据和方法都写在了自定义子组件中,那么用户回退页面时, 更新数据就成了 ...

  5. Vue组件中data的使用方式

    全局组件中的data使用方式: js中写法: Vue.component("mycom1",{template:'<h1>这是全局组件--{{msg}}</h1& ...

  6. java socket中属性详解_前端开发:关于Vue组件中的data属性值是函数而不是对象的详解...

    最近在搞关于前端开发的基础知识归纳,发现了不少经典知识点,那么本篇博文就来分享一个经典的知识点:Vue组件中的data属性值为什么是函数而不是对象.首先来了解一下Vue组件的使用理念:在Vue组件使用 ...

  7. vue中data定义数字类型_[乐意黎原创] Vue中data定义的三种方式和区别

    在 Vue中,定义data时,经常有好几种写法,一不小心会混淆,这里彻底详述一下,以便记分清 . 一.在vue中,定义data可以有三种写法. 1. 第一种写法,data是一个对象. var app ...

  8. html5怎么改为vue_是否还在疑惑Vue.js中组件的data为什么是函数类型而不是对象类型...

    点击上方"前端印象",选择"设为星标"第一时间关注技术干货! 引言 要理解本篇文章,必须具备JavaScript中基本数据类型和引用数据类型的概念,大家可以花两 ...

  9. 微信小程序 自定义组件中 triggerEvent() 函数失效的一种情况 (Cannot read property ‘triggerEvent‘ of undefined)

    在网络上并没有搜索到这种情况,这里记录下避免以后的自己和广大码农踩到这个坑 问题描述:在自定义组件中想调用 this.triggerEvent()函数给父组件传参,过程中报错:Cannot read ...

最新文章

  1. Android 项目版本的修改
  2. Java数据结构与算法(第四章栈和队列)
  3. 图灵奖得主Hamming对于少数人获得重大成果原因的思考,送给此刻克服迷惘坚持前行的你...
  4. EPSON机器人_SPEL+语言
  5. html图片上下左右滑动,一个支持任意尺寸的图片上下左右滑动效果
  6. CC2530存储空间——Code
  7. JAVA构架之并发编程的一些总结
  8. springcloud使用restTemplate进行服务调用
  9. kafka java api 删除_Kafka入门系列—6. Kafka 常用命令及Java API使用
  10. 挖掘IP价值 天猫星选让明星直播1+1>2
  11. django使用mysql 好处_Django使用MySQL
  12. mysql jpa默认值_Spring JPA-枚举中枚举字段的默认值
  13. zookeeper运维
  14. 脚本变量中包含空格的解决办法
  15. system.gc()和system.runFinalization()区别作用
  16. IDEA背景颜色及背景图片设置
  17. 教师管理系统_ER图_功能图_数据字典_数据库脚本
  18. 数据过多/DOM操作导致页面卡顿和请求突增导致页面崩溃
  19. 全球供应链报告显示,2020年中国采购业一枝独秀
  20. 计算机串口如何应用程序,串口通信调试软件的功能与使用方法 - 全文

热门文章

  1. 2007年新兴网络服务
  2. 泰克示波器MDO3054固件升级的一种方法
  3. 李彦宏妻子马东敏向中科大捐赠一亿,成立“蔷薇科大发展基金”
  4. 学习笔记(2):零基础掌握 Python 入门到实战-一个圆点的何去何从(一)
  5. P315 GCD等于XOR UVa12176 “不难发现”的解释 以及完整推导过程
  6. Picture-In-Picture 画中画模式
  7. 华中科技大学有计算机科学与技术学院导师,华中科技大学计算机科学与技术学院导师简介-徐鹏...
  8. php如何做表格,新手怎么制作表格
  9. 饥荒联机版好友服务器未响应,饥荒联机版机器人wx-78使用心得
  10. (三)爬取一些网页图片