Vue组件中data为什么必须是一个函数【Vue面试题】

作者: 前端小野2分类: 野生技能协会 发布时间: 2020-08-16 22:00:21 浏览:10984 次

Vue组件中data为什么必须是一个函数【Vue面试题】

你就是森口啊:
避免组件中的数据互相影响。同一个组件被复用多次会创建多个实例,如果 data 是一个对象的话,这些实例用的是同一个构造函数。为了保证组件的数据独立,要求每个组件都必须通过 data 函数返回一个对象作为组件的状态。

强珍绝施约:
解释的不是很对,return{} 和 cont data 以后return data 含义是完全一样的,还是应该用 Component.prototype.data 解释才合理,虽然效果一样但是含义是不一样的。

正在学习前端中:
如果是多个组件共享同一数据呢? vuex?

【回复】对的,可以使用vuex,或者保存在同一个父级组件也可以
职校学生的无奈:
[星星眼]很多人讲的不够好,甚至是答辩。让我来讲给大伙捏。因为esmodule的导出是一份引用。如果直接是对象写法,就会导致每个组件使用的数据都是一份共享的[吃瓜],用函数就不会有这种问题[星星眼]

永别阿拉德:
其实为什么写成函数是因为设计时,希望data里传入参数控制一下有的转成响应式的,有的数据不必转成响应式的。和隔离没半毛钱关系。

永别阿拉德:
听了有好像啥也没听,尤大神爱用函数,你就必须用函数。组件中的数据本身就是互相隔离的。react的state就用的对象,咋的互相有干扰了?照你这么解释methods、watch干脆也写函数得了。

【回复】回复 @前端猎人-小野森森-2 : 不是愤怒,对于data写成函数得解释一点都不合理。watch,filters都是写成对象的都是组件间隔离的。data写成对象就不能组件间隔离了?
【回复】不是吧 如果复用组件不用return 一个新对象, 而是直接data:{ } 这样数据也是默认响应式的, 但是复用组件确实数据会互相污染. methods、watch 如果写成函数了, 他们都有私有域, 那他们怎么访问data的数据, data的数据是经过处理挂载在vue实例上的, methods写成函数this指向谁
【回复】回复 @永别阿拉德 :别激动,再看看其他人的课,可能解释的会好得多。加油[打call][打call][打call]
bili_59656600695:
可是{}字面量创建对象本身就是返回一个新对象啊

程风蓝:
感谢大佬,最近辞职找工作醒醒脑挺有用,讲的挺好的

【回复】一样 最近辞职了在家2倍速过一下视频 挺有用的

程序员 编程 知识分享官招募令·第五期 经验分享 JS JAVASCRIPT WEB VUE WEB前端

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!