开发者社区> 问答> 正文

组件中 data 为什么是一个函数?

已解决

组件中 data 为什么是一个函数?

展开
收起
pandacats 2019-12-10 11:10:16 477 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    为什么组件中的 data 必须是一个函数,然后 return 一个对象,而 new Vue 实例里,data 可以直接是一个对象?

    // data
    
    data() {
    
      return {
    
    message: "子组件",
    
    childName:this.name
    
      }
    
    }
    
    // new Vue
    
    new Vue({
    
      el: '#app',
    
      router,
    
      template: '<App/>',
    
      components: {App}
    
    })
    

    因为组件是用来复用的,且 JS 里对象是引用关系,如果组件中 data 是一个对象,那么这样作用域没有隔离,子组件中的 data 属性值会相互影响,如果组件中 data 选项是一个函数,那么每个实例可以维护一份被返回对象的独立的拷贝,组件实例之间的 data 属性值不会互相影响;而 new Vue 的实例,是不会被复用的,因此不存在引用对象的问题。

    2019-12-10 11:10:51
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
The Value of Exploratory Data 立即下载
Data Flow&StreamingFundamental 立即下载
AutoAlerts-From Data to Action 立即下载