问答

vue的props为什么是个对象呢

作者:admin 2021-05-06 我要评论

vue的props为什么是个对象呢,而不是一个函数,是因为vue的单向数据流,让他不能修改,或者说修改的时候会提示,是这样的原因嘛 ### 那想一想,他为什么就不能是...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

vue的props为什么是个对象呢,而不是一个函数,是因为vue的单向数据流,让他不能修改,或者说修改的时候会提示,是这样的原因嘛

###

那想一想,他为什么就不能是对象呢?

无论是data还是props、watch、computed等,都是需要的一个对象,那为什么还要多此一举在外面套一层函数呢(没错,就是点名data的)?至于data为什么需要是一个函数,看你问题估计你也知道,就是因为组件复用引起的数据复用问题。

那么watch、computed有这个问题吗,并没有,props呢?不能说没有,但是大部分情况下是没有,因为初始化props是取了props的键值绑定到一个新的对象上,而props的值几乎都来自于父元素,即使是数据存在复用情况也是我们人为选择的。

那刚才为什么说大部分情况下,因为还有一种情况,就是props使用的是默认值,而这个默认值是一个对象或数组的时候,这时候父组件都不传值,那子组件就存在复用的问题了,但是对于这种情况,vue也有明确的规定,必须使用函数。

image.png

###

你的props是指特定的prop还是指的prop这个集合?如果是props这个集合那显然就应该是个对象啊

###

因为同一组件的不同实例不会因为共享 props 而相互影响,那就让他们共享得了,省点内存。
data就不一样,共享 data 之后就会相互影响。
其实 Vue 也可以采用别的预处理方式,把用对象的 data 做到各实例互不影响,但至于大佬们为什么没这么做,而是让开发者传入初始化函数来隔离影响,也许是考虑到 data 有时候也要共享吧,不得而知。。。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • vue的props为什么是个对象呢

    vue的props为什么是个对象呢

  • vue项目chrome调试不显示代码

    vue项目chrome调试不显示代码

  • java jar 包执行的区别

    java jar 包执行的区别

  • docker方式安装jenkins,无法启动,提

    docker方式安装jenkins,无法启动,提

腾讯云代理商
海外云服务器