vue生命周期学习(watch跟computed)
1、watch鉤子函數監聽數據的變化
watch 的一個特點是,最初綁定的時候是不會執行的(firstName的值在data定義時賦予的值),要等到 firstName 改變時才執行監聽計算。
<div> <p>FullName: {{fullName}}</p> <p>FirstName: <input type="text" v-model="firstName"></p> </div>new Vue({el: '#root',data: {firstName: 'Dawei',lastName: 'Lou',fullName: '' }, watch: {firstName(newName, oldName) {this.fullName = newName + ' ' + this.lastName;}} })handler方法和immediate屬性
這時候需要增加immediate屬性,設置為true,如果不需要就設置false,那就是初始化不會監聽變化,這時候需要將watch部分的代碼修改如何
watch: {firstName: {handler(newName, oldName) {this.fullName = newName + ' ' + this.lastName;},// 代表在wacth里聲明了firstName這個方法之后立即先去執行handler方法immediate: true} }應用場景:
可以只用watch來監聽數據的變化實時更新數據的變化
<template><input v-model="value" /> // 搜索框 </template> <script> export default {data(){return {value: '' // 值}},watch:{value(val){ // 實時監聽數據變化this.wat_fun(val)}}, methods:{wat_fun(val){ // 這里可以調用搜索api接口console.log(val)}} } </script2、computed鉤子函數監聽數據的變化
讀取computed里面的值還是用this.changeVal3、watch和computed各自處理的數據關系場景不同 (來源于)
知識點1:watch擅長處理的場景:一個數據影響多個數據
知識點2:computed擅長處理的場景:一個數據受多個數據影響
對于watch,我們先從一個場景說起
在《海賊王》里面,主角團隊的名稱叫做:“草帽海賊團”
所以我們把船員依次稱為:
草帽海賊團索隆,草帽海賊團娜美,以此類推。。。
我們希望:當船團名稱發生變更的時候,這艘船上所有船員的名字一起變更!!
例如:
有一天,船長路飛為了加強團隊建設,弘揚海賊文化,決定“草帽海賊團”改名為“橡膠海賊團”(路飛是橡膠惡魔果實能力者)
我們代碼如下:
總結:
computed 在數據未發生變化時,優先讀取緩存。computed 計算屬性只有在相關的數據發生變化時才會改變要計算的屬性,當相關數據沒有變化時,它會讀取緩存。而不必想 motheds方法 和 watch 方法是的每次都去執行函數。
總結
以上是生活随笔為你收集整理的vue生命周期学习(watch跟computed)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何构建企业TPM管理体系?
- 下一篇: vue城市搜索