Practice
1. What is the main purpose of using
track and trigger in Vue's manual reactivity system?easy
Solution
Step 1: Understand manual reactivity concept
Manual reactivity allows developers to decide when Vue should update the UI instead of automatic updates.Step 2: Role of
trackandtriggertrackwatches properties for changes, andtriggernotifies Vue to update dependents when changes occur.Final Answer:
To manually control when Vue updates the UI by tracking dependencies and triggering updates. -> Option DQuick Check:
Manual reactivity = control updates [OK]
Hint: Remember: track watches, trigger updates UI manually [OK]
Common Mistakes:
- Thinking Vue updates UI automatically without manual triggers
- Confusing track/trigger with component creation
- Assuming track triggers updates directly
2. Which of the following is the correct syntax to import
track and trigger from Vue's reactivity package?easy
Solution
Step 1: Identify correct import source
The manual reactivity APIstrackandtriggerare exported from '@vue/reactivity', not directly from 'vue'.Step 2: Correct import syntax
Using named imports with curly braces is required:import { track, trigger } from '@vue/reactivity';Final Answer:
import { track, trigger } from '@vue/reactivity'; -> Option CQuick Check:
Correct import = import { track, trigger } from '@vue/reactivity'; [OK]
Hint: Use curly braces and '@vue/reactivity' for manual reactivity imports [OK]
Common Mistakes:
- Importing from 'vue' instead of '@vue/reactivity'
- Missing curly braces for named imports
- Using default import syntax incorrectly
3. Given the following code snippet, what will be logged to the console?
import { reactive, effect, track, trigger } from '@vue/reactivity';
const state = { count: 0 };
effect(() => {
track(state, 'count');
console.log('Count is:', state.count);
});
state.count = 1;
trigger(state, 'count');medium
Solution
Step 1: Initial effect run and tracking
The effect runs once initially, callingtrack(state, 'count')and logging 'Count is: 0'.Step 2: State change and manual trigger
Whenstate.countis set to 1, Vue does not update automatically because manual tracking is used. Callingtrigger(state, 'count')manually runs the effect again, logging 'Count is: 1'.Final Answer:
Count is: 0 Count is: 1 -> Option AQuick Check:
Manual trigger causes effect rerun [OK]
Hint: Manual trigger reruns effect, so both old and new logged [OK]
Common Mistakes:
- Assuming automatic update without trigger
- Expecting only one log line
- Confusing track with trigger
4. Identify the error in this Vue manual reactivity code snippet:
import { reactive, effect, track, trigger } from '@vue/reactivity';
const state = { value: 10 };
effect(() => {
track(state.value);
console.log('Value:', state.value);
});
state.value = 20;
trigger(state, 'value');medium
Solution
Step 1: Check track usage
trackrequires two arguments: the reactive target object and the property key as a string. Here,track(state.value)passes only the value (number 10), which is incorrect.Step 2: Correct usage of track
The correct call istrack(state, 'value')to track the 'value' property on the reactive object.Final Answer:
track is called with a property value instead of the target object and key. -> Option AQuick Check:
track needs (object, key) [OK]
Hint: track needs object and key, not the property value [OK]
Common Mistakes:
- Passing property value instead of object and key to track
- Forgetting to trigger after state change
- Misusing effect with manual reactivity
5. You want to optimize a Vue app by manually controlling reactivity for a large object
data. Which approach correctly tracks and triggers updates only for the status property when it changes?hard
Solution
Step 1: Manual tracking of specific property
To optimize, track only the 'status' property by callingtrack(data, 'status')inside the effect watching it.Step 2: Trigger update after changing property
After updatingdata.status, calltrigger(data, 'status')to notify dependents and update UI.Final Answer:
Calltrack(data, 'status')inside the effect and calltrigger(data, 'status')after updatingdata.status. -> Option BQuick Check:
Track and trigger specific property for manual reactivity [OK]
Hint: Track and trigger only changed property for best performance [OK]
Common Mistakes:
- Tracking or triggering entire object instead of property
- Relying on automatic reactivity when manual control is needed
- Not triggering after property update
