組件中 data 為什么是一個函數?


為什么組件中的 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 的實例,是不會被復用的,因此不存在引用對象的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM