返回列表 发帖

Vue 3.0 选项 Data#data

#data
类型:Function
详细:
返回组件实例的 data 对象的函数。在 data 中,我们不建议观察具有自身状态行为的对象,如浏览器 API 对象和原型 property。一个好主意是这里只有一个表示组件 data 的普通对象。

一旦观察过,你就无法在根数据对象上添加响应式 property。因此推荐在创建实例之前,就声明所有的根级响应式 property。

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

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

示例:
  // 直接创建一个实例
  const data = { a: 1 }
  
  // 这个对象将添加到组件实例中
  const vm = Vue.createApp({
    data() {
      return data
    }
  }).mount('#app')
  
  console.log(vm.a) // => 1
注意,如果你为 data property 使用了箭头函数,则 this 不会指向这个组件的实例,不过你仍然可以将其实例作为函数的第一个参数来访问。

  data: vm => ({ a: vm.myProp })
参考深入响应性原理

返回列表