1. 程式人生 > >vue心得系列1——methods,computed,watch的區別

vue心得系列1——methods,computed,watch的區別

使用vue已經有一段時間了,專案當中遇到過很多問題。

之前會通過社群,部落格和百度來觀摩學習大佬前輩們的解決思路,最後轉換到專案和工作當中來解決現有的問題。

這裡是我在解決問題當中對一些點的整理,或者說自我理解。

關於methods,computed,watch的區別,先結合官網給出解釋來區別計算屬性和方法

這裡methods方法和computed計算屬性,官網給出最大的區別就是計算屬性依賴於data裡的資料,而方法不依賴。

這裡的依賴通俗地講,如果data裡的資料發生變化,computed會根據其函式裡面包含的計算屬性重新計算;反之,資料如果無變化,computed會直接從快取裡拿到上次的計算結果。

以上就是我對官網解釋的理解。然而,其實在使用過程中,computed與methods的區別還有一些。

寫法區別:computed最後一定要有個返回值,而且不帶引數;methods的返回值和引數都是可有可無的。

用法區別:computed形式上是function()函式,但是可以理解為data裡面的資料,並且這樣使用;methods就是普通的function()函式

場景區別:computed監聽data裡的資料變化,會根據data資料變化而自動重新計算;methods無法監聽data資料

 

另外就是watch了,其實watch是computed的一個拓展,與computed形成互補,作用都是監聽data()資料。而區別就是computed監聽資料,需要返回切必須返回一個新的值(形式上function,本質是data),所以監聽之後隨動的資料只有一個(return後的資料);watch則是不管是形式還是本質都是一個function,所以可以監聽資料,並隨動改變多個值。

 

下面是我做的一個表格總結

區別 形式 本質 場景 寫法 用法 位置
methods function function 邏輯方法處理 可以帶引數及返回值 使用一次呼叫一次

vue標籤v-on

生命週期函式

methods呼叫其他

computed function data 監聽data 必須攜帶返回值,不允許引數 一次呼叫,可以看作data 一般直接當做data在vue標籤{{}},v-bind中使用
watch function function 監聽data 不允許引數和返回值 呼叫一次永久使用 一般在生命週期函式,或者在methods被其他方法呼叫

以上是我對methods,computed和watch的自己的理解,如果謬誤或表達有誤,還望指正。