watch() Watch Reactive Sources

Last updated: 2026-10-22

watch() Watch Reactive Sources

watch() observes one or more reactive sources and runs a callback on change with old and new values — for reactive logic with side effects.

GroupReactivity: Core
KindAPI
ScopeComponent
Vue Version3.0+
SSR SupportYes

📝 Syntax

watch(source, (newVal, oldVal) => { ... }, { immediate: true, deep: true })

// multiple sources
watch([count, keyword], ([c, k], [oc, ok]) => { ... })

⚙️ Arguments

sourceA ref, getter function, reactive object or array
callback(newValue, oldValue, onCleanup) => void
optionsimmediate, deep and flush (pre|post|sync)

Returns:A stop function that cancels the watcher

▶ Example

Edit the code below and see the live result:

Output:

Editing the input shows 'old → new', e.g. '10 → 12'.

💡 Key Points

💡 Tip Lazy by default — add immediate: true to run on setup.
⚠️ Warning deep: true walks the whole object; watch a getter (() => obj.a) for precision.
⚠️ Warning Cancel stale async work in onCleanup / onWatcherCleanup to avoid out-of-order results.
More case studies coming soon.

📚 Related Tutorials

❓ FAQ

Q watch vs computed?
A computed derives a cached value; watch runs side effects with no return value.
Q How to run the watcher immediately?
A Pass { immediate: true }; the callback fires once on setup with undefined oldValue.
Q Can watch observe several sources?
A Yes — pass an array: watch([a, b], ([newA, newB]) => ...).
Web-Tutorial.com

Web-Tutorial Tech Team

A team of developers maintaining programming tutorials. Each tutorial is written and reviewed by developers with expertise in that field. We work to keep our content accurate and reliable — if you spot an issue, please let us know.

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏