vue.js 中的 watch 可用于監(jiān)聽數(shù)據(jù)屬性的變化并執(zhí)行操作。語法為:watch(expression, callback, options)。它支持使用字符串或函數(shù)監(jiān)聽數(shù)據(jù)屬性,并在變化時調(diào)用回調(diào)函數(shù),并可通過 options 配置是否立即調(diào)用、是否深層監(jiān)聽和是否同步更新。
Vue.js 中 watch 的用法
Vue.js 中的 watch 是一個響應(yīng)式 API,可讓你監(jiān)聽數(shù)據(jù)屬性的變化并根據(jù)這些變化執(zhí)行操作。
語法
<code class="js">watch(expression, callback, options)</code>
登錄后復(fù)制
參數(shù)
expression:要監(jiān)聽的數(shù)據(jù)屬性。可以是字符串(屬性名)或函數(shù)(返回需要監(jiān)聽的值)。
callback:當(dāng)數(shù)據(jù)屬性發(fā)生變化時調(diào)用的函數(shù)。它接收兩個參數(shù):新值和舊值。
options(可選):用于配置 watch 的可選對象。
示例
<code class="js">// 使用字符串 watch('message', function (newValue, oldValue) { console.log(`Message changed from "${oldValue}" to "${newValue}".`); }); // 使用函數(shù) watch(function () { return this.count; }, function (newValue, oldValue) { console.log(`Count incremented from ${oldValue} to ${newValue}.`); });</code>
登錄后復(fù)制
選項
immediate:控制 watch 是否在組件初始化時立即調(diào)用回調(diào)函數(shù),默認(rèn)值為 false。
deep:控制 watch 是否深層監(jiān)聽對象和數(shù)組的變化,默認(rèn)值為 false。
sync:控制 watch 是否在數(shù)據(jù)屬性發(fā)生變化后立即調(diào)用回調(diào)函數(shù),默認(rèn)值為 false。
使用場景
使用 watch 的常見場景包括:
在數(shù)據(jù)屬性發(fā)生變化時更新 DOM
在數(shù)據(jù)屬性發(fā)生變化時觸發(fā)外部動作(例如,發(fā)出請求)
響應(yīng)其他組件的事件