[vue] data属性文档

data属性文档

转自:https://cn.vuejs.org/v2/api/#data
项目上,遇到的坑,加深印象

data

  • 类型: Object | Function
  • 限制: 组件的定义只接受function
  • 详细:
    Vue实例的数据对象。Vue将会递归将data的属性转换为getter/setter,从而让data的属性能够响应数据变化。对象必须是纯粹的对象(含有零个或多个的key/value对):浏览器API创建的原生对象,原型上的属性会被忽略。大概来说,data应该只能是数据-不推荐观察拥有状态行为的对象。

一旦观察过,不需要再次在数据对象上添加响应式属性。因此推荐在创建实例之前,就声明所有的根级响应式属性。

实例创建之后,可以通过vm.$data访问原始数据对象。Vue实例也代理了data对象上所有的属性,因此访问vm.a等价于访问vm.$data.a

_$开头的属性不会被Vue实例代理,因为它们可能和Vue内置的属性、API方法冲突。你可以使用例如vm.$data._property的方式访问这些属性。

当一个组件被定义,data必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例。如果data仍然是一个纯粹的对象,则所有的实例将共享引用同一个数据对象!通过提供data函数,每次创建一个新实例后,我们能够调用data函数,从而返回初始数据的一个全新副本数据对象。

如果需要,可以通过将vm.$data传入JSON.parse(JSON.stringify(...))得到深拷贝的原始数据对象。

  • 示例:
var data = { a: 1 }

var vm = new Vue({
	data: data
})

vm.a
vm.$data === data

var Component = Vue.extend({
	data: function(){
		return { a: 1 }
	}
})

注意,如果你为data属性使用了箭头函数,则this不会指向这个组件的实例,不过你仍然可以将其实例作为函数的第一个参数来访问。

data: vm => ({ a: vm.myProp })

猜你喜欢

转载自blog.csdn.net/weixin_36210698/article/details/85000575