vergil wang


Hi, i'm vergilw, i'm a iOS developer from China, i'm living in Hubei,Wuhan.


iOS Developer

VueJS中props和data的区别

props和data

props和data都可以用来存储JS对象,修改它们都会触发重新渲染。 从字面上理解,props是对象的属性,属性是不可变,如果改变了就不是原来的对象了,而是另一个的对象。data是对象的数据,借用其他响应式框架的说法应该是状态,状态是可变的,例如时钟对象的时针任意变化指向不同的值,它始终都是原来的那个时钟。

这实际上引出了响应式框架里一个重要概念,就是无状态组件stateless和有状态组件stateful。

区别

  props data
Can get initial value from parent Component? Yes Yes
Can be changed by parent Component? Yes No
Can set default values inside Component? Yes Yes
Can change inside Component? No Yes
Can set initial value for child Components? Yes Yes
Can change in child Components? Yes No

选择

使用data是可选的,但是由于使用data增加了组件的复杂性,因此优先选择无状态的组件。我们应该避免使用太多有状态组件。 具体选择可以参考Stateful与Stateless的选择

Reference

props vs state

最近的文章

ECMAScript 2015

Arrows and Lexical ThisArrows are a function shorthand using the => syntax. They are syntactically similar to the related feature in C#, Java 8 and CoffeeScript. They support both expression and statement bodies. Unlike functions, arrows share ...…

继续阅读
更早的文章

JS规范 CommonJS AMD

CommonJS 规范CommonJS 是以在浏览器环境之外构建 JavaScript 生态系统为目标而产生的项目,比如在服务器和桌面环境中。这个项目最开始是由 Mozilla 的工程师 Kevin Dangoor 在2009年1月创建的,当时的名字是 ServerJS。2009年8月,这个项目改名为 CommonJS,以显示其 API 的更广泛实用性。CommonJS 是一套规范,它的创建和核准是开放的。这个规范已经有很多版本和具体实现。CommonJS 并不是属于 ECMAScript...…

继续阅读