feat(watch): warn when using lazy with simple callback
This commit is contained in:
parent
c2c9c2b57e
commit
3deb20df63
@ -1,5 +1,5 @@
|
||||
import { watch, reactive, computed, nextTick, ref, h } from '../src/index'
|
||||
import { render, nodeOps, serializeInner } from '@vue/runtime-test'
|
||||
import { render, nodeOps, serializeInner, mockWarn } from '@vue/runtime-test'
|
||||
import {
|
||||
ITERATE_KEY,
|
||||
DebuggerEvent,
|
||||
@ -10,6 +10,8 @@ import {
|
||||
// reference: https://vue-composition-api-rfc.netlify.com/api.html#watch
|
||||
|
||||
describe('api: watch', () => {
|
||||
mockWarn()
|
||||
|
||||
it('basic usage', async () => {
|
||||
const state = reactive({ count: 0 })
|
||||
let dummy
|
||||
@ -344,7 +346,7 @@ describe('api: watch', () => {
|
||||
expect(cb).toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('ignore lazy', async () => {
|
||||
it('ignore lazy option when using simple callback', async () => {
|
||||
const count = ref(0)
|
||||
let dummy
|
||||
watch(
|
||||
@ -354,6 +356,7 @@ describe('api: watch', () => {
|
||||
{ lazy: true }
|
||||
)
|
||||
expect(dummy).toBeUndefined()
|
||||
expect(`lazy option is only respected`).toHaveBeenWarned()
|
||||
|
||||
await nextTick()
|
||||
expect(dummy).toBe(0)
|
||||
|
@ -29,6 +29,7 @@ import {
|
||||
} from './errorHandling'
|
||||
import { onBeforeUnmount } from './apiLifecycle'
|
||||
import { queuePostRenderEffect } from './renderer'
|
||||
import { warn } from './warning'
|
||||
|
||||
export type WatchHandler<T = any> = (
|
||||
value: T,
|
||||
@ -197,14 +198,20 @@ function doWatch(
|
||||
scheduler: applyCb ? () => scheduler(applyCb) : scheduler
|
||||
})
|
||||
|
||||
if (!lazy || !cb) {
|
||||
if (lazy && cb) {
|
||||
oldValue = runner()
|
||||
} else {
|
||||
if (__DEV__ && lazy && !cb) {
|
||||
warn(
|
||||
`watch() lazy option is only respected when using the ` +
|
||||
`watch(getter, callback) signature.`
|
||||
)
|
||||
}
|
||||
if (applyCb) {
|
||||
scheduler(applyCb)
|
||||
} else {
|
||||
scheduler(runner)
|
||||
}
|
||||
} else {
|
||||
oldValue = runner()
|
||||
}
|
||||
|
||||
recordEffect(runner)
|
||||
|
Loading…
x
Reference in New Issue
Block a user