Bird
Raised Fist0
Vueframework~10 mins

Reactive objects with reactive in Vue - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Reactive objects with reactive
Create reactive object
↓
Access properties
↓
Modify properties
↓
Vue tracks changes
↓
Update dependent views/components
This flow shows how Vue creates a reactive object, tracks property access and changes, and updates views automatically.
Execution Sample
Vue
import { reactive } from 'vue'
const state = reactive({ count: 0 })
state.count++
console.log(state.count)
This code creates a reactive object with a count property, increments it, and logs the updated value.
Execution Table
StepActionProperty Accessed/ModifiedState BeforeState AfterEffect
1Create reactive object-{}{ count: 0 }Reactive proxy created
2Access state.countcount{ count: 0 }{ count: 0 }Dependency tracked
3Modify state.countcount{ count: 0 }{ count: 1 }Change detected, triggers updates
4Log state.countcount{ count: 1 }{ count: 1 }Outputs 1
💡 All steps complete; reactive object updated and logged
Variable Tracker
VariableStartAfter Step 1After Step 3Final
state.countundefined011
Key Moments - 2 Insights
Why does Vue track property access when we read state.count?
Vue tracks property access (see Step 2 in execution_table) to know which parts of the UI depend on that property, so it can update them when the property changes.
What happens when we modify a property inside a reactive object?
When a property changes (Step 3), Vue detects the change and triggers updates to any dependent views or components automatically.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of state.count after Step 3?
A0
Bundefined
C1
D2
💡 Hint
Check the 'State After' column for Step 3 in the execution_table.
At which step does Vue detect a change and trigger updates?
AStep 3
BStep 2
CStep 1
DStep 4
💡 Hint
Look for 'Change detected' in the Effect column of the execution_table.
If we did not access state.count before modifying it, what would Vue miss?
ACreating the reactive object
BTracking dependencies for updates
CLogging the value
DIncrementing the count
💡 Hint
Refer to Step 2 where dependency tracking happens on property access.
Concept Snapshot
Use Vue's reactive() to create reactive objects.
Accessing properties tracks dependencies.
Modifying properties triggers updates.
Vue automatically updates views using this reactivity.
Always access properties before modifying to track dependencies.
Full Transcript
This lesson shows how Vue's reactive() function creates reactive objects. When you create a reactive object, Vue wraps it to track property access and changes. Accessing a property registers it as a dependency, so Vue knows what to update later. When you modify a property, Vue detects the change and updates any dependent views or components automatically. The execution table traces creating the reactive object, accessing and modifying a property, and logging the result. The variable tracker shows how the count property changes from undefined to 0 to 1. Key moments clarify why property access is important for dependency tracking and how Vue triggers updates on changes. The quiz tests understanding of these steps and their effects. This helps beginners see how Vue's reactivity works step-by-step.

Practice

(1/5)
1. What does the reactive function in Vue do?
easy
A. It converts a reactive object into a plain JavaScript object.
B. It makes an object reactive so Vue tracks its changes automatically.
C. It creates a new Vue component.
D. It registers a global event listener.

Solution

  1. Step 1: Understand the purpose of reactive

    The reactive function wraps an object so Vue can track its property changes.
  2. Step 2: Compare options with the purpose

    Only It makes an object reactive so Vue tracks its changes automatically. correctly describes this behavior; others describe unrelated Vue features.
  3. Final Answer:

    It makes an object reactive so Vue tracks its changes automatically. -> Option B
  4. Quick Check:

    reactive() tracks object changes = C [OK]
Hint: Remember: reactive() wraps objects to track changes [OK]
Common Mistakes:
  • Confusing reactive() with component creation
  • Thinking reactive() converts reactive objects back to plain objects
  • Assuming reactive() adds event listeners
2. Which of the following is the correct way to create a reactive object in Vue 3?
easy
A. const state = reactive.count = 0
B. const state = reactive = { count: 0 }
C. const state = reactive([count: 0])
D. const state = reactive({ count: 0 })

Solution

  1. Step 1: Check the syntax for reactive object creation

    The correct syntax is calling reactive() with an object: reactive({ count: 0 }).
  2. Step 2: Identify syntax errors in other options

    const state = reactive = { count: 0 } uses invalid assignment, C uses array syntax incorrectly, D tries to assign property directly without reactive call.
  3. Final Answer:

    const state = reactive({ count: 0 }) -> Option D
  4. Quick Check:

    reactive() called with object literal = A [OK]
Hint: Use reactive() with an object inside parentheses [OK]
Common Mistakes:
  • Using assignment instead of function call
  • Passing array instead of object
  • Assigning properties outside reactive()
3. Given this code, what will be logged to the console?
import { reactive } from 'vue'
const state = reactive({ count: 1 })
state.count = 5
console.log(state.count)
medium
A. 5
B. Error: Cannot assign to reactive property
C. undefined
D. 1

Solution

  1. Step 1: Understand reactive object property update

    Assigning state.count = 5 updates the reactive property value.
  2. Step 2: Check the logged value

    Logging state.count after update outputs the new value 5.
  3. Final Answer:

    5 -> Option A
  4. Quick Check:

    Updated reactive property logs new value = D [OK]
Hint: Reactive objects update properties directly and reflect changes [OK]
Common Mistakes:
  • Thinking reactive objects are immutable
  • Expecting old value after update
  • Confusing reactive with ref syntax
4. What is wrong with this Vue 3 code snippet?
import { reactive } from 'vue'
const state = reactive({ count: 0 })
state = { count: 5 }
medium
A. You cannot reassign a reactive object variable directly.
B. The reactive function requires an array, not an object.
C. The property count must be declared with ref(), not reactive.
D. Reactive objects cannot have numeric properties.

Solution

  1. Step 1: Identify the error in variable reassignment

    The variable state is declared with const, so it cannot be reassigned.
  2. Step 2: Understand reactive object usage

    Reactive objects are mutable in their properties but the variable holding them cannot be reassigned if declared const.
  3. Final Answer:

    You cannot reassign a reactive object variable directly. -> Option A
  4. Quick Check:

    const variable reassignment causes error = A [OK]
Hint: const variables can't be reassigned, only their properties changed [OK]
Common Mistakes:
  • Trying to reassign const reactive variables
  • Confusing reactive() input types
  • Thinking reactive objects restrict property types
5. You want to create a reactive object to track a user's profile with nested address info. Which code correctly makes the entire object reactive so changes to nested properties update the UI?
hard
A. const profile = reactive({ name: 'Alice' }); profile.address = { city: 'NY', zip: '10001' }
B. const profile = { name: 'Alice', address: reactive({ city: 'NY', zip: '10001' }) }
C. const profile = reactive({ name: 'Alice', address: { city: 'NY', zip: '10001' } })
D. const profile = reactive({ name: 'Alice', address: ref({ city: 'NY', zip: '10001' }) })

Solution

  1. Step 1: Understand nested reactivity with reactive()

    Using reactive() on the whole object recursively makes nested properties reactive automatically.
  2. Step 2: Analyze each option's approach

    const profile = reactive({ name: 'Alice', address: { city: 'NY', zip: '10001' } }) wraps the entire object including nested address, so all changes are reactive. const profile = reactive({ name: 'Alice' }); profile.address = { city: 'NY', zip: '10001' } assigns a plain object to nested property after reactive call, losing reactivity for nested changes. const profile = { name: 'Alice', address: reactive({ city: 'NY', zip: '10001' }) } mixes reactive inside plain object, which breaks reactivity tracking. const profile = reactive({ name: 'Alice', address: ref({ city: 'NY', zip: '10001' }) }) mixes ref inside reactive, which is invalid since reactive expects plain objects.
  3. Final Answer:

    const profile = reactive({ name: 'Alice', address: { city: 'NY', zip: '10001' } }) -> Option C
  4. Quick Check:

    reactive() wraps whole nested object = B [OK]
Hint: Wrap entire nested object with reactive() for full reactivity [OK]
Common Mistakes:
  • Wrapping nested objects separately after reactive() call
  • Mixing reactive and plain objects incorrectly
  • Assigning plain objects to reactive properties
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