Vue 計算屬性(computed)和偵聽器(watch)

本文章首更于掘金賬號,主要是為了方便自己以后復(fù)習(xí)和回憶裁蚁,有錯誤或不合理之處還請大家指正。

計算屬性:computed

作用

  • 減少模板中的計算邏輯
  • 進(jìn)行數(shù)據(jù)緩存
  • 依賴固定的數(shù)據(jù)類型

使用

  • 在computed屬性對象中定義計算屬性的方法
  • 在頁面中使用{{方法名}}來顯示計算的結(jié)果
  • 通過getter/setter實現(xiàn)對屬性數(shù)據(jù)的顯示和監(jiān)視

注意點

  • 計算屬性是基于它們的依賴進(jìn)行緩存的检眯,只有相關(guān)的依賴發(fā)生改變時才會重新求值厘擂。只要相關(guān)的依賴未改變,只會返回之前的結(jié)果锰瘸,不會執(zhí)行函數(shù)刽严。
  • computed依賴監(jiān)控自己定義的變量,computed不能計算已經(jīng)在data里面定義過的值避凝,該變量在computed里面定義舞萄,然后可以在頁面上進(jìn)行數(shù)據(jù)綁定
  • computed比較適合對多個變量或者對象進(jìn)行處理后返回一個結(jié)果值,也就是數(shù)多個變量中的某一個值發(fā)生了變化則我們監(jiān)控的這個值也就會發(fā)生變化

實例

<template>
    <div>
        <label>姓:<input type="text" placeholder="請輸入姓氏" v-model="firstName"></label><br/>
        <label>名:<input type="text" placeholder="請輸入名字" v-model="lastName"></label>
        // 可以直接綁定計算屬性
        <label>姓 名:<input type="text" placeholder="請輸入姓名" v-model="fullName"></label>
    </div>
</template>

<script>
    export default {
        name: "ComputedAndWatch",
        data(){
            return {
                firstName:'',
                lastName:'',
            }
        },
        computed:{
            fullName:{
                get(){
                    return this.firstName + '·' + this.lastName

                }
            }
        }
    }

實現(xiàn)雙向綁定

set(value){
    console.log(`${value}`);        // 測試:使用字符串拼接只能使用“ ` ”
    let names = value.split('·');
    this.firstName = names[0];
    this.lastName = names[1];
}

使用場景

  • computed擅長處理的場景:一個數(shù)據(jù)受多個數(shù)據(jù)影響


    image

偵聽器:Watch

作用

  • 主要用于監(jiān)控vue實例的變化管削,監(jiān)控的變量必須在data里面聲明才可以
  • 可以監(jiān)控一個變量或者一個對象倒脓,但是只能監(jiān)控整個對象或單個變量、
  • 依賴于固定的數(shù)據(jù)類型(響應(yīng)式數(shù)據(jù))

使用

  • 通過vm對象的$watch()或watch配置來監(jiān)視指定的屬性
  • 當(dāng)屬性變化時含思,回調(diào)函數(shù)自動調(diào)用崎弃,在函數(shù)內(nèi)部進(jìn)行計算
  • watch不能雙向的綁定值

實例

watch:{
    // 監(jiān)聽firstName
    firstName(value){
        console.log(`watch監(jiān)視到firstName發(fā)生改變:${value}`);
        //更新fullName
        this.fullName  = value + '·' + this.lastName
        },
    // 監(jiān)聽lastName
    lastName(value){
        console.log(`watch監(jiān)視到lastName發(fā)生改變:${value}`);
        this.fullName  = this.firstName + '·' + value
        }
    }

使用場景

  • watch一般用于監(jiān)控路由、input輸入框的值特殊處理等等含潘,它比較適合的場景是一個數(shù)據(jù)影響多個數(shù)據(jù)
image

總結(jié)

  • 能用computed的地方饲做,盡可能使用computed
  • computed是計算一個新的屬性,并將該屬性掛載到vm上遏弱,而watch是監(jiān)聽已經(jīng)存在且已掛載VM上的數(shù)據(jù)盆均,所以用watch同樣可以監(jiān)聽computed計算屬性的變化
  • computed本質(zhì)上一個惰性求值的觀察者,具有緩存性漱逸,只有當(dāng)依賴變化后泪姨,第一次訪問computed屬性游沿,才會計算新的值,而watch則是當(dāng)數(shù)據(jù)發(fā)生變化便會調(diào)用執(zhí)行函數(shù)
  • 從使用場景上說肮砾,computed使用一個數(shù)據(jù)被多個數(shù)據(jù)影響诀黍,而watch適用一個數(shù)據(jù)影響多個數(shù)據(jù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市唇敞,隨后出現(xiàn)的幾起案子蔗草,更是在濱河造成了極大的恐慌,老刑警劉巖疆柔,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咒精,死亡現(xiàn)場離奇詭異,居然都是意外死亡旷档,警方通過查閱死者的電腦和手機模叙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鞋屈,“玉大人范咨,你說我怎么就攤上這事〕П樱” “怎么了渠啊?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長权旷。 經(jīng)常有香客問我替蛉,道長,這世上最難降的妖魔是什么拄氯? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任躲查,我火速辦了婚禮,結(jié)果婚禮上译柏,老公的妹妹穿的比我還像新娘镣煮。我一直安慰自己,他們只是感情好鄙麦,可當(dāng)我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布典唇。 她就那樣靜靜地躺著,像睡著了一般胯府。 火紅的嫁衣襯著肌膚如雪介衔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天盟劫,我揣著相機與錄音夜牡,去河邊找鬼与纽。 笑死侣签,一個胖子當(dāng)著我的面吹牛塘装,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播影所,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼蹦肴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了猴娩?” 一聲冷哼從身側(cè)響起阴幌,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎卷中,沒想到半個月后矛双,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡蟆豫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年议忽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片十减。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡栈幸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帮辟,到底是詐尸還是另有隱情速址,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布由驹,位于F島的核電站芍锚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏荔棉。R本人自食惡果不足惜闹炉,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望润樱。 院中可真熱鬧渣触,春花似錦、人聲如沸壹若。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽店展。三九已至养篓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赂蕴,已是汗流浹背柳弄。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碧注。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓嚣伐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親萍丐。 傳聞我的和親對象是個殘疾皇子轩端,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容