compositionAPI之watch和watcheffect

1、watch

  • 引用:watch需要從Vue中引入才能使用罗丰;
  • 參數(shù):watch可以獲得原始值和當前值再姑;
  • 特性:watch惰性執(zhí)行,首次不執(zhí)行代碼元镀;
  • immediate: true;讓watch立即執(zhí)行。
  • 偵聽多個屬性
 const app = Vue.createApp({
    setup() {
        const { reactive, watch, toRefs } = Vue;
        const nameObj = reactive({
            cnName:'吳彥祖',
            enNmae:'wuyanzu'
        });
        watch([() => nameObj.cnName, () => nameObj.enNmae], ([newCnName, newEnName], [oldCnName, oldEnName]) => {
            console.log('watch', newCnName, oldCnName, '---', newEnName, oldEnName);
        },{ immediate: true })
        const { cnName, enNmae } = toRefs(nameObj);
        return { cnName, enNmae }
    },
    template: `
      <div>
        <div>
          Name: <input v-model="cnName"> 
        </div>
        <div>
          Name is {{cnName}}
        </div>
        <div>
          EnglishName: <input v-model="enNmae"> 
        </div>
        <div>
          EnglishName is {{enNmae}}
        </div>
      </div>
    `,
  });
  • 偵聽單個屬性
 const app = Vue.createApp({
    setup() {
        const { ref, watch} = Vue;
        const name = ref('吳彥祖');
        watch(name, (newName, oldName) => {
            console.log('watch', newName, oldName, '---', newEnName, oldEnName);
        })
        return { name }
    },
    template: `
      <div>
        <div>
          Name: <input v-model="name "> 
        </div>
        <div>
          Name is {{name }}
        </div>
      </div>
    `,
  });

2讨永、watchEffect

  • watchEffect無惰性卿闹,立即執(zhí)行代碼澳淑,不需要傳遞你要偵聽的內容比原,自動會感知代碼依賴杠巡,不需要傳遞很多參數(shù)雇寇,只要傳遞一個回調函數(shù)蚌铜。
  • watchEffect只能獲得當前值嫩海,不能獲取之前數(shù)據(jù)的值。
  • 引用:watchEffect需要從Vue中引入才能使用审葬;
const app = Vue.createApp({
    setup() {
      const { reactive, watch, watchEffect, toRefs } = Vue;
      const nameObj = reactive({
        name: 'dell', englishName: 'lee'
      })
      // 具備一定的惰性 lazy
      // 參數(shù)可以拿到原始和當前值
      // 可以偵聽多個數(shù)據(jù)的變化奕谭,用一個偵聽器承載
      watch([() => nameObj.name, () => nameObj.englishName], ([curName, curEng], [prevName, preEng]) => {
        console.log('watch', curName, prevName, '---', curEng, preEng);
      }, { immediate: true })
       const stop = watchEffect(() => {
         console.log(nameObj.name);
         console.log(nameObj.englishName);
         setTimeout(() => {
            stop();
         }, 5000)
       })

      const { name, englishName } = toRefs(nameObj);

      return { name, englishName }
    },
    template: `
      <div>
        <div>
          Name: <input v-model="name"> 
        </div>
        <div>
          Name is {{name}}
        </div>
        <div>
          EnglishName: <input v-model="englishName"> 
        </div>
        <div>
          EnglishName is {{englishName}}
        </div>
      </div>
    `,
  });

3、stop

  • 使用stop可以停止watch 官册、watchEffect對內容的偵聽难捌。

總結:

  • watch: watch惰性執(zhí)行,首次不執(zhí)行代碼根吁,watch可以獲得原始值和當前值;
  • watchEffect: watchEffect只能獲得當前值满粗,watch無惰性愚争,會自動感知偵聽內容;
  • stop:可以停止watch 轰枝、watchEffect對內容的偵聽;
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末步淹,一起剝皮案震驚了整個濱河市诚撵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寿烟,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缝其,死亡現(xiàn)場離奇詭異,居然都是意外死亡榴都,警方通過查閱死者的電腦和手機漠其,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來和屎,“玉大人,你說我怎么就攤上這事莹汤〉哂。” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵止潮,是天一觀的道長。 經常有香客問我钞楼,道長,這世上最難降的妖魔是什么询件? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任宛琅,我火速辦了婚禮,結果婚禮上嘿辟,老公的妹妹穿的比我還像新娘。我一直安慰自己英古,他們只是感情好,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布召调。 她就那樣靜靜地躺著,像睡著了一般国撵。 火紅的嫁衣襯著肌膚如雪玻墅。 梳的紋絲不亂的頭發(fā)上壮虫,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機與錄音剩拢,去河邊找鬼。 笑死徐伐,一個胖子當著我的面吹牛募狂,可吹牛的內容都是我干的。 我是一名探鬼主播祸穷,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼需曾!你這毒婦竟也來了祈远?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谋减,失蹤者是張志新(化名)和其女友劉穎躬充,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體充甚,經...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年盈蛮,在試婚紗的時候發(fā)現(xiàn)自己被綠了技矮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片殊轴。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡袒炉,死狀恐怖,靈堂內的尸體忽然破棺而出孽文,到底是詐尸還是另有隱情夺艰,我是刑警寧澤芋哭,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布减牺,位于F島的核電站,受9級特大地震影響拔疚,放射性物質發(fā)生泄漏愕贡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一墩虹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诫钓,春花似錦篙螟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽下愈。三九已至蕾久,卻和暖如春势似,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背障簿。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工栅迄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人霞篡。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓朗兵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親余掖。 傳聞我的和親對象是個殘疾皇子礁鲁,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內容