組件中的data為什么不是一個對象而是一個函數?


當一個組件被定義, data 必須聲明為返回一個初始數據對象的函數,因為組件可能被用來創建多個實例。
如果 data 仍然是一個純粹的對象,則所有的實例將共享引用同一個數據對象!通過提供 data 函數,每次創建一個新實例后,
我們能夠調用 data 函數,從而返回初始數據的一個全新副本數據對象。類比與引用數據類型。
如果不用function return 每個組件的data都是內存的同一個地址,那一個數據改變其他也改變了,這當然就不是我們想要的。
用function return 其實就相當於申明了新的變量,相互獨立,自然就不會有這樣的問題

假定存在組件ComponentA,里面定義為

module.exports = {
props: {
title: String
},
data: {
test: 1
}
}
在某個Page里面我們定義了如下的模板

<template>
<div>
<component-a title="1"></component-a>
<component-a title="2"></component-a>
</div>
</template>
那么上面兩個ComponentA的實例中的data將同時為組件定義時data對應的對象,即相當於兩個實例的data相互影響了。


免責聲明!

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



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