Bird
Raised Fist0
Vueframework~5 mins

Watch and watchEffect in Vue - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of watch in Vue?

watch lets you run code when a specific reactive value changes. It’s like setting a listener for that value.

Click to reveal answer
intermediate
How does watchEffect differ from watch?

watchEffect automatically tracks all reactive values used inside it and reruns when any of them change, without specifying dependencies manually.

Click to reveal answer
intermediate
When should you use watch instead of watchEffect?

Use watch when you want to watch specific values and react only to their changes, especially if you want to compare old and new values.

Click to reveal answer
beginner
What is a common use case for watchEffect?

Use watchEffect for side effects that depend on multiple reactive sources without manually listing them, like updating the DOM or logging.

Click to reveal answer
intermediate
How do you stop a watcher created by watch or watchEffect?

Both return a stop function. Call this function to stop watching and clean up resources.

Click to reveal answer
What does watch in Vue require you to specify?
ANo arguments, it tracks automatically
BThe component name
COnly functions
DThe reactive value(s) to watch
Which Vue API automatically tracks dependencies inside its callback?
AwatchEffect
Bref
Ccomputed
Dwatch
What can you access in the watch callback that you cannot in watchEffect?
AThe DOM element
BThe component instance
CThe old and new values
DThe reactive source list
How do you stop a watcher in Vue?
ACall the stop function returned by <code>watch</code> or <code>watchEffect</code>
BSet the reactive value to null
CReload the component
DUse <code>unwatch</code> method
Which is best for watching multiple reactive sources without listing them?
Awatch
BwatchEffect
Ccomputed
Dref
Explain how watch and watchEffect work in Vue and when to use each.
Think about manual vs automatic dependency tracking and use cases.
You got /6 concepts.
    Describe how to stop a watcher in Vue and why you might want to do that.
    Consider cleanup and performance.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main difference between watch and watchEffect in Vue?
      easy
      A. watchEffect only runs once, watch runs continuously.
      B. watch tracks specific reactive sources, watchEffect tracks all reactive dependencies automatically.
      C. watch runs immediately on setup, watchEffect waits for changes.
      D. watchEffect requires manual cleanup, watch does not.

      Solution

      1. Step 1: Understand watch behavior

        watch listens to specific reactive data sources you specify and runs a callback only when those change.
      2. Step 2: Understand watchEffect behavior

        watchEffect runs immediately and tracks all reactive data accessed inside it, rerunning whenever any of those change.
      3. Final Answer:

        watch tracks specific reactive sources, watchEffect tracks all reactive dependencies automatically. -> Option B
      4. Quick Check:

        watch vs watchEffect difference = watch tracks specific reactive sources, watchEffect tracks all reactive dependencies automatically. [OK]
      Hint: Remember: watch tracks specific data, watchEffect tracks all used data [OK]
      Common Mistakes:
      • Thinking watchEffect only runs once
      • Assuming watch runs immediately on setup
      • Confusing cleanup requirements
      2. Which of the following is the correct syntax to watch a reactive variable count in Vue 3 Composition API?
      easy
      A. watch(count, (newVal, oldVal) => { console.log(newVal) })
      B. watch(count, () => { console.log(count) })
      C. watchEffect(() => { console.log(count) })
      D. watch(() => count, (newVal, oldVal) => { console.log(newVal) })

      Solution

      1. Step 1: Identify correct watch syntax

        In Vue 3 Composition API, watch accepts a ref directly as the first argument, which automatically watches its .value.
      2. Step 2: Check callback parameters

        The callback receives newVal and oldVal as parameters, correctly used in watch(count, (newVal, oldVal) => { console.log(newVal) }) to log the new value.
      3. Final Answer:

        watch(count, (newVal, oldVal) => { console.log(newVal) }) -> Option A
      4. Quick Check:

        Correct watch syntax uses ref directly = watch(count, (newVal, oldVal) => { console.log(newVal) }) [OK]
      Hint: Pass ref directly to watch [OK]
      Common Mistakes:
      • Using getter returning ref object like () => count
      • Confusing watch with watchEffect syntax
      • Omitting callback parameters
      3. Given the code below, what will be logged to the console after count.value = 2 is executed?
      import { ref, watch } from 'vue'
      const count = ref(1)
      watch(() => count.value, (newVal, oldVal) => {
        console.log(`Changed from ${oldVal} to ${newVal}`)
      })
      count.value = 2
      medium
      A. SyntaxError
      B. Changed from undefined to 2
      C. No output
      D. Changed from 1 to 2

      Solution

      1. Step 1: Understand watch callback parameters

        The watch callback receives old and new values of the watched reactive source.
      2. Step 2: Trace the change

        Initially, count.value is 1. When changed to 2, the callback logs the change from 1 to 2.
      3. Final Answer:

        Changed from 1 to 2 -> Option D
      4. Quick Check:

        watch logs old and new values correctly = Changed from 1 to 2 [OK]
      Hint: watch callback shows old and new values on change [OK]
      Common Mistakes:
      • Expecting no output on change
      • Confusing initial value with undefined
      • Misunderstanding callback parameters
      4. What is wrong with this Vue 3 code using watch? How to fix it?
      import { ref, watch } from 'vue'
      const count = ref(0)
      watch(count, (newVal) => {
        console.log(newVal)
      })
      medium
      A. No error; code works fine
      B. Missing cleanup function; fix by adding cleanup inside callback
      C. Callback missing oldVal parameter; fix by adding it
      D. Passing reactive variable directly; fix by passing a getter function like () => count

      Solution

      1. Step 1: Identify watch argument type

        In Vue 3, watch(count, callback) is valid; it automatically tracks count.value changes.
      2. Step 2: Callback parameters

        The callback receives newVal and optional oldVal; omitting oldVal is fine.
      3. Final Answer:

        No error; code works fine -> Option A
      4. Quick Check:

        watch accepts ref directly = No error; code works fine [OK]
      Hint: watch accepts refs directly [OK]
      Common Mistakes:
      • Thinking ref must be wrapped in getter
      • Assuming oldVal always required
      • Believing code has error
      5. You want to run a side effect immediately and re-run it whenever any reactive data inside changes, but also want to stop the effect manually later. Which Vue 3 API and pattern should you use?
      hard
      A. Use watch without immediate option and no cleanup
      B. Use watch with immediate: true option and no stop function
      C. Use watchEffect and store the returned stop function to call later
      D. Use watchEffect but it cannot be stopped manually

      Solution

      1. Step 1: Identify immediate reactive effect

        watchEffect runs immediately and tracks all reactive dependencies automatically.
      2. Step 2: Understand stopping effect

        watchEffect returns a stop function that can be called to stop the effect manually.
      3. Final Answer:

        Use watchEffect and store the returned stop function to call later -> Option C
      4. Quick Check:

        watchEffect runs immediately and can be stopped = Use watchEffect and store the returned stop function to call later [OK]
      Hint: watchEffect returns stop function to control effect lifecycle [OK]
      Common Mistakes:
      • Thinking watchEffect cannot be stopped
      • Using watch without immediate for immediate run
      • Ignoring stop function usage
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard