日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)VUE3教程:Vue3.0響應(yīng)性APIComputed與watch

本節(jié)例子中代碼使用的單文件組件語(yǔ)法

創(chuàng)新互聯(lián)建站長(zhǎng)期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為昭陽(yáng)企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),昭陽(yáng)網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

#computed

使用 getter 函數(shù),并為從 getter 返回的值返回一個(gè)不變的響應(yīng)式 ref 對(duì)象。

const count = ref(1)
const plusOne = computed(() => count.value + 1)


console.log(plusOne.value) // 2


plusOne.value++ // error

或者,它可以使用具有 getset 函數(shù)的對(duì)象來(lái)創(chuàng)建可寫的 ref 對(duì)象。

const count = ref(1)
const plusOne = computed({
  get: () => count.value + 1,
  set: val => {
    count.value = val - 1
  }
})


plusOne.value = 1
console.log(count.value) // 0

類型聲明:

// read-only
function computed(getter: () => T): Readonly>>


// writable
function computed(options: { get: () => T; set: (value: T) => void }): Ref

#watchEffect

在響應(yīng)式地跟蹤其依賴項(xiàng)時(shí)立即運(yùn)行一個(gè)函數(shù),并在更改依賴項(xiàng)時(shí)重新運(yùn)行它。

const count = ref(0)


watchEffect(() => console.log(count.value))
// -> logs 0


setTimeout(() => {
  count.value++
  // -> logs 1
}, 100)

類型聲明:

function watchEffect(
  effect: (onInvalidate: InvalidateCbRegistrator) => void,
  options?: WatchEffectOptions
): StopHandle


interface WatchEffectOptions {
  flush?: 'pre' | 'post' | 'sync'  // default: 'pre'
  onTrack?: (event: DebuggerEvent) => void
  onTrigger?: (event: DebuggerEvent) => void
}


interface DebuggerEvent {
  effect: ReactiveEffect
  target: any
  type: OperationTypes
  key: string | symbol | undefined
}


type InvalidateCbRegistrator = (invalidate: () => void) => void


type StopHandle = () => void

參考watchEffect 指南

#watch

watch API 與選項(xiàng)式 API this.$watch (以及相應(yīng)的 watch 選項(xiàng)) 完全等效。watch 需要偵聽特定的 data 源,并在單獨(dú)的回調(diào)函數(shù)中副作用。默認(rèn)情況下,它也是惰性的——即,回調(diào)是僅在偵聽源發(fā)生更改時(shí)調(diào)用。

  • 與 watchEffect 比較,watch 允許我們:
    • 惰性地執(zhí)行副作用;
    • 更具體地說(shuō)明應(yīng)觸發(fā)偵聽器重新運(yùn)行的狀態(tài);
    • 訪問(wèn)偵聽狀態(tài)的先前值和當(dāng)前值。

#偵聽一個(gè)單一源

偵聽器 data 源可以是返回值的 getter 函數(shù),也可以是 ref:

// 偵聽一個(gè)getter
const state = reactive({ count: 0 })
watch(
  () => state.count,
  (count, prevCount) => {
    /* ... */
  }
)


// 直接偵聽一個(gè)ref
const count = ref(0)
watch(count, (count, prevCount) => {
  /* ... */
})

#偵聽多個(gè)源

偵聽器還可以使用數(shù)組同時(shí)偵聽多個(gè)源:

watch([fooRef, barRef], ([foo, bar], [prevFoo, prevBar]) => {
  /* ... */
})

#與 watchEffect 共享行為

watchwatchEffect 在手動(dòng)停止,副作用無(wú)效 (將 onInvalidate 作為第三個(gè)參數(shù)傳遞給回調(diào)),flush timing 和 debugging 有共享行為。

類型聲明:

// 偵聽單一源
function watch(
  source: WatcherSource,
  callback: (
    value: T,
    oldValue: T,
    onInvalidate: InvalidateCbRegistrator
  ) => void,
  options?: WatchOptions
): StopHandle


// 偵聽多個(gè)源
function watch[]>(
  sources: T
  callback: (
    values: MapSources,
    oldValues: MapSources,
    onInvalidate: InvalidateCbRegistrator
  ) => void,
  options? : WatchOptions
): StopHandle


type WatcherSource = Ref | (() => T)


type MapSources = {
  [K in keyof T]: T[K] extends WatcherSource ? V : never
}


// 參見 `watchEffect` 類型聲明共享選項(xiàng)
interface WatchOptions extends WatchEffectOptions {
  immediate?: boolean // default: false
  deep?: boolean
}

參考watch 指南


標(biāo)題名稱:創(chuàng)新互聯(lián)VUE3教程:Vue3.0響應(yīng)性APIComputed與watch
本文網(wǎng)址:http://m.5511xx.com/article/djghhhp.html