黑马vue---61.为什么vue组件的data要是一个函数 一.总结 一句话总结: 因为js中以函数为变量作用域,所以这样可以保证每个组件的数据不互相影响 二.why components data must be a function <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport…
vue学习笔记之:为何data是一个方法 在vue开发中,我们可以发现,data中的属性值是在function中return出来的.可为何data必须是一个函数呢?我们先看官方的解释: 当一个组件被定义, data 必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例.如果 data 仍然是一个纯粹的对象,则所有的实例将共享引用同一个数据对象!通过提供 data 函数,每次创建一个新实例后,我们能够调用 data 函数,从而返回初始数据的一个全新副本数据对象 而我对这句话的理解是…
当我们const vm = new Vue({ el : '#app',   data : { msg:‘hello World’ } })用习惯了,data是一个对象,可到了vue组件 Vue.component('cp',{   template : `<div> <span>{{  info }}</span> </div>`,   data (){ return { info :  'hello Vue' } } }) 因为Vue.component…
组件间通信是组件开发的,我们既希望组件的独立性,数据能互不干扰,又不可避免组件间会有联系和交互. 在vue中,父子组件的关系可以总结为props down,events up: 在vue2.0中废弃了$dispatch和$broadcast,子组件使用$emit发出自定义事件 父子组件之间的通信 思考场景如下: 一个总群(父组件)中大家做自我介绍, 陌陌.小小.可可.天天 收到 总群发来的消息之后(父传子),将自己的信息发送到总群(子传父) 父组件 template <template> &l…
组件意在 复用 , 若为 对象, 则会相互干扰. 且 Vue 不允许此事发生, 规定必须为函数, 否则报错. 原理如下 对象 // 模拟创建组件 var Component= function() {} // 模拟使用对象作data Component.prototype.data = { a: 1 } // 模拟使用组件 var component1 = new Component() var component2 = new Component() // 发现 data 共用, 相互影响 c…
朋友,当你提出以上问题的时候建议你先去复习下原型链的知识 但是我好人做到底直接就讲了吧,我们先看一下下面的这段代码: function Component () { this.data = this.data } Component.prototype.data = { name: '卡莲', gender: '女' } 以后再放链接: 我们来分析一下假如是以下这种情况: function Component(){ } Component.prototype.data = { name:'卡莲'…
在创建或注册模板的时候,传入一个data属性作为用来绑定的数据.但是在组件中,data必须是一个函数,而不能直接把一个对象赋值给它. Vue.component('my-component', { template: '<div>OK</div>', data() { return {} // 返回一个唯一的对象,不要和其他组件共用一个对象进行返回 }, }) 你在前面看到,在new Vue()的时候,是可以给data直接赋值为一个对象的.这是怎么回事,为什么到了组件这里就不行了.…
普通的Vue实例data是一个对象: data: { count: 0 } 组件的data是一个方法: data: function () { return { count: 0 } } 详情见官网:https://cn.vuejs.org/v2/guide/components.html…
在创建或注册模板的时候,传入一个data属性作为用来绑定的数据.但是在组件中,data必须是一个函数,而不能直接把一个对象赋值给它. Vue.component('my-component', { template: '<div>hello Vue</div>', data() { return {} // 返回一个唯一的对象,不要和其他组件共用一个对象进行返回!!! }, }) 你在前面看到,在new Vue()的时候,是可以给data直接赋值为一个对象的.这是怎么回事,为什么到…
原文地址 vue组件中的data必须是函数 类比引用数据类型 Object是引用数据类型,如果不用function 返回,每个组件的data 都是内存的同一个地址,一个数据改变了其他也改变了; javascipt只有函数构成作用域(注意理解作用域,只有函数的{}构成作用域,对象的{}以及 if(){}都不构成作用域),data是一个函数时,每个组件实例都有自己的作用域,每个实例相互独立,不会相互影响 举个…