iT邦幫忙

2022 iThome 鐵人賽

DAY 3
1
自我挑戰組

程式小白的 vue.js 學習筆記系列 第 3

Day 3 : Vue 的 data 為什麼要使用 return 呢?

  • 分享至 

  • xImage
  •  

忘了當時是在哪裡看到關於這個面試題,看到的當下感覺自己立刻被問倒 XD

當時已經習慣 data 的函式就是要 return,但關於「為什麼」倒是沒想過 =w=

為什麼 Vue 的 data 是個函式呢?

其實 data 也可以是物件形式的,端看它是在組件內,還是在根實例內。

如果在根實例,data可以是物件形式 (因為是單一實例,不會和其他實例相互汙染數據)
如果在組件的話,data 就必須是函式,並使用 return 回傳值,避免多個組件之間共用同一個 data,而產生數據汙染。

為什麼 data 這個函式要使用 return 呢?

在 Vue 中,每個組件都是一個可被複用的 Vue 實例。當這個組件被複用在不同頁面時,每被複用一次,也就會被複製一次。因此組件中的 data 資料,在每個頁面應該都是彼此獨立的,不受相互影響,各自維護內部的資料。

而之所以能達到如此效果,就是因為 data 在函式內透過 return 回傳值,讓每個組件的實例可以返回一份新的 data,進而達成讓各個組件的實例,在每個頁面形成自己獨立的作用域。

data(){
    return{
        count:0
    }
}

假如我們今天把 data 改成了物件形式,會發生什麼事呢?

data : {
   count: 0
 }

如果不在 function 內 return 回傳值,那麼每個組件的 data 就會共用同一個記憶體位置,當其中一個組件的數據改變,會連帶影響其他頁面相同組件的數據一起被更動。


參考文章 : vue中的data为什么是一个函数?起到什么作用? 原创


上一篇
Day2 : Vue 的資料綁定 : 怎麼把 data 渲染到畫面上呢?
下一篇
Day 4 : v-for & 用 index 作為 key 會引發的問題
系列文
程式小白的 vue.js 學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言