Vue 2.0 data, computed介紹

陳漢庭
3 min readOct 1, 2020

--

剛開始寫vue的時候的感覺,只要<template></template>寫好、<script></script>寫好就花了很多時間,對什麼東西under the hood沒什麼好奇。

Data Property

但寫久之後便開始好奇,尤其是在使用data property的時候需要寫return這種方式會感到特別的在意。直到我看到這篇文章,解答了我心中的疑問。在javascript的世界裡面,Object屬於reference type,假設我們在data property不是寫成function return object的方式,而直接寫成object的話,就有點像是培因六道共享視野的概念,這個object即將被vue instance共享。

Mosh Course

[常犯錯誤]
Avoid Mutating a Prop Directly: 這是如果嘗試要直接拿props進來的值直接調用,解決方法為將props的值assign到data property或者給computed property調用。如果要更深入的話,這篇講得還不錯。

Computed Property

個人認為Computed Property是data Property的延伸。Computed Property可以使用getter跟setter,一般沒有指定哪種方式預設是getter。那setter的話不常用,但我看過同事使用setter改變vuex, localStorage, sessionStorage的值,尤其是改變某狀態的時候還蠻方便的。 computed的getter是一種pure function,同一個input會得到同個輸出。

[常犯錯誤]
可能想嘗試將params傳進去computed property: 這篇StackOverflow講得很好,回答說那就使用methods,不要使用computed property,主要的解釋在下方 ⬇️

The difference between a computed property and a method is that computed properties are cached and change only when their dependencies change. A method will evaluate every time it’s called.

參考資料
1. Computed Property:連結
2. Mosh Course:連結

--

--

陳漢庭
陳漢庭

Written by 陳漢庭

由於零散的紀錄過了一段時間之後就看不懂了,於是為了強迫自己用故事的方式記錄學到的東西,就開啟我的發文之路。

No responses yet