javascript - Vue.js 中的 'data:' 和 'data()' 有什么区别?

标签 javascript vue.js vuejs2

我以两种方式使用数据选项。在第一个片段数据对象中包含一个键值,但是在第二个数据中是一个函数。有没有个人的好处。在Vue.js Docs上找不到相关的解释 下面是两个代码片段:

new Vue({
  el: "#app",
  data: {
      message: 'hello mr. magoo'
    }

});

new Vue({
  el: "#app",
  data() {
    return {
      message: 'hello mr. magoo'
    }
  }
});

两者都给我相同的输出。

最佳答案

在考虑您的具体代码示例时,对您问题的评论似乎错过了一个关键点。

在根 Vue 实例中,即通过 new Vue({ ... }) 构建,您可以简单地使用 data: { ... } 没有任何问题。问题是当您拥有通过 Vue.component(...) 定义的可重用组件时。在这些情况下,您需要使用 data() {return { ... };}data: function() {return { ... };} .

这样做的原因是为了确保对于可重用子组件的每个单独实例,都有一个包含所有正在操作的数据的唯一对象。如果在子组件中使用 data: { ... },则相同的数据对象将在子组件之间共享,这可能会导致一些严重的错误。

请查看 corresponding section of the Vue.js documentation有关此问题的更多信息。

关于javascript - Vue.js 中的 'data:' 和 'data()' 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48176345/

相关文章:

vue.js - 引用错误 : document is not defined in nativescript-vue

javascript - NPM nodemon 和 debug 在终端中没有输出

javascript - React如何修复失败的 Prop 类型 - 字符串类型预期对象的无效 Prop

JAVASCRIPT - 在数组展平后从子对象内的父对象数组获取值

javascript - 在 Firebase 中,我收到未捕获的类型错误 : Cannot read property 'initializeApp' of undefined,,但不确定为什么未定义 'firebase'?

javascript - 使用 Vue 创建静态左侧导航栏组件

javascript - Vue.js - 如何在数组对象上实现计算属性?

javascript - 如何使用 jQuery 数据表使用 onChange 事件从 html 选择标签选项值中获取值?

javascript - Vue 转换不适用于具有可重用组件的路由器 View

javascript - 如何在 v-for (vue.js) 中访问 <slot> 中的项目