計算屬性和偵聽器

2022-07-03 08:54:13 字數 2879 閱讀 2425

<

div

id="example"

>

<

p>original message: "}"

p>

<

p>computed reversed message: "}"

p>

div>

var vm = new vue(,

computed:

}})結果:original message: "hello"

computed reversed message: "olleh"

這裡我們宣告了乙個計算屬性reversedmessage。我們提供的函式將用作 propertyvm.reversedmessage的 getter 函式:

console.log(vm.reversedmessage) // => 'olleh'

vm.message = 'goodbye'

console.log(vm.reversedmessage) // => 'eybdoog'

vm.reversedmessage的值始終取決於vm.message的值。

vue 知道vm.reversedmessage依賴於vm.message,因此當vm.message發生改變時,所有依賴vm.reversedmessage的繫結也會更新。而且最妙的是我們已經以宣告的方式建立了這種依賴關係:計算屬性的 getter 函式是沒有*** (side effect) 的,這使它更易於測試和理解。

方法:

<

p>reversed message: "}"

p>

// 在元件中

methods:

}

方法:每當觸發重新渲染時,呼叫方法將總會再次執行函式。

計算屬性:多次訪問reversedmessage計算屬性會立即返回之前的計算結果,而不必再次執行函式。

我們為什麼需要快取?

假設我們有乙個效能開銷比較大的計算屬性 a,它需要遍歷乙個巨大的陣列並做大量的計算。然後我們可能有其他的計算屬性依賴於 a。如果沒有快取,我們將不可避免的多次執行 a 的 getter!如果你不希望有快取,請用方法來替代。

偵聽屬性:觀察和響應 vue 例項上的資料變動

<

div

id="demo"

>}

div>

var vm = new vue(,

watch: ,

lastname: function (val)

}})

計算屬性版本

var vm = new vue(,

computed:

}})

計算屬性預設只有 getter,不過在需要時你也可以提供乙個 setter:

computed: ,

// setter

set: function (newvalue)

}}

現在再執行vm.fullname = 'john doe'時,setter 會被呼叫,vm.firstnamevm.lastname也會相應地被更新。

雖然計算屬性在大多數情況下更合適,但有時也需要乙個自定義的偵聽器。這就是為什麼 vue 通過watch選項提供了乙個更通用的方法,來響應資料的變化。

當需要在資料變化時執行非同步或開銷較大的操作時,這個方式是最有用的。

例如:

<

div

id="watch-example"

>

<

p>

ask a yes/no question:

<

input

v-model

="question"

>

p>

<

p>}

p>

div>

<

script

src=""

>

script

>

<

script

src=""

>

script

>

<

script

>

varwatchexamplevm

=new

vue(,

watch:

},created:

function

() ,

methods:

this

.answer ='

thinking...

'var

vm =

this

axios.get(

'').then(

function

(response) )

.catch

(function

(error) )

}}})

script

>

結果:ask a yes/no question: 

questions usually contain a question mark. ;-)

在這個示例中,使用watch選項允許我們執行非同步操作 (訪問乙個 api),限制我們執行該操作的頻率,並在我們得到最終結果前,設定中間狀態。這些都是計算屬性無法做到的。

計算屬性和偵聽器

1 計算屬性快取 vs 方法 將乙個函式定義為計算屬性和方法得到的結果是相同的。但不同的是計算屬性是基於它們的依賴進行快取的,只是在相關依賴發生改變時才會重新求值。方法 methods 計算屬性 computed 2 計算屬性 vs 偵聽屬性 偵聽屬性 觀察和響應vue例項上的資料變動 watch ...

計算屬性和偵聽器

1,計算屬性 在 computed 屬性物件中定義計算屬性的方法 在頁面中使用 來顯示計算的結果 通過 getter setter 實現對屬性資料的顯示和監視 計算屬性存在快取,多次讀取只執行一次 getter 計算 通過在表示式中呼叫方法也可以達到同樣的效果 但是,不同的是計算屬性是基於它們的響應...

計算屬性 方法和偵聽器

doctype html en utf 8 計算屬性 方法和偵聽器 title vue.js script head root div newvue 計算屬性 computed script body html 計算屬性在使用的時候會有乙個快取,其依賴的data,在沒有發生變化的時候,計算屬性就不會...