data是响应式的
- Vue 实例的数据对象。Vue 会递归地把 data 的 property 转换为 getter/setter,从而让 data 的 property 能够响应数据变化。
- 对象必须是纯粹的对象 (含有零个或多个的 key/value 对) :
- 下面
return是一个大对象,里面有key、value
- 下面
- 大概来讲,data 应该只能是数据 - 不推荐观察拥有状态行为的对象。
data() {
return {
shownDatas: [], // 接口返回数据
isLoading: false, //是否正在加载中
startTime: "",
endTime: "",
form: {
startTime: getTime('今天').startTime,
endTime: getTime('今天').endTime,
searchValue: '',
},
queryData: {
timeLabel: '',
pageLabel: '',
}
};
- 实例创建之后,可以通过vm.$data访问原始数据对象;
- vue也代理了data对象上所有的属性property,因此
vm.a等价于访问vm.$data.a - 以
_或$开头的 property 不会被 Vue 实例代理,因为它们可能和 Vue 内置的 property、API 方法冲突。你可以使用例如vm.$data._property的方式访问这些 property。
如何追踪变化的
当你把一个普通的 JavaScript 对象传给 Vue 实例的 data 选项,Vue 将遍历此对象全部的属性,并使用 Object.defineProperty 把这些属性所有转为 getter/setter。
今天的重点computed是响应式的。
- 当你有一些数据须要随着其它数据变更而变更时,一般更好的作法是使用计算属性而不是命令式的 watch 回调。
- .computed属性,属于持续变化跟踪。在computed属性定义的时候,这个computed属性就与给它赋值的变量绑定了。改变这个赋值变量,computed属性值会随之改变。