Bird
Raised Fist0
Vueframework~10 mins

Options API vs Composition API decision in Vue - Visual Side-by-Side Comparison

Choose your learning style10 modes available
Concept Flow - Options API vs Composition API decision
Start: Choose API style
↓
Options API
↓
Define data, methods, computed
↓
Component created
↓
Use template with this
↓
Render component
↓
End
↓
Start: Choose API style
↓
Composition API
↓
Import reactive, ref, functions
↓
Setup function: define state and logic
↓
Return reactive state
↓
Use template with direct refs
↓
Render component
↓
End
This flow shows the two main ways to build Vue components: Options API organizes code by options like data and methods, while Composition API organizes by logical features inside a setup function.
Execution Sample
Vue
export default {
  data() { return { count: 0 } },
  methods: { increment() { this.count++ } }
}
This Options API example defines a count state and an increment method inside a Vue component.
Execution Table
StepActionState BeforeState AfterOutput/Effect
1Component createdcount: undefinedcount: 0Initial state set
2Call increment methodcount: 0count: 1count increased by 1
3Render templatecount: 1count: 1Display count = 1
4Call increment method againcount: 1count: 2count increased by 1
5Render templatecount: 2count: 2Display count = 2
6Endcount: 2count: 2Component stable
💡 Component lifecycle ends or user stops interaction
Variable Tracker
VariableStartAfter 1After 2Final
countundefined012
Key Moments - 2 Insights
Why do we use 'this.count' in Options API but just 'count' in Composition API?
In Options API, 'this' refers to the component instance, so data and methods are accessed via 'this'. In Composition API, variables are defined inside setup and returned, so you use them directly without 'this'. See execution_table steps 2 and 3.
How does Composition API help with organizing complex logic better than Options API?
Composition API groups related code (state, functions) together inside setup, making it easier to manage and reuse. Options API splits code by type (data, methods), which can scatter related logic. This is why many prefer Composition API for bigger components.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of 'count' after step 4?
A1
B0
C2
Dundefined
💡 Hint
Check the 'State After' column for step 4 in the execution_table.
At which step does the component first render the count value?
AStep 1
BStep 3
CStep 2
DStep 5
💡 Hint
Look for 'Render template' action in the execution_table.
If we switch to Composition API, how would accessing 'count' in the template change?
AUse 'count' directly without 'this'
BUse 'count.value' inside template
CUse 'this.count' as before
DCannot access 'count' in template
💡 Hint
Recall key_moments explanation about 'this' usage difference between APIs.
Concept Snapshot
Options API:
- Organizes code by options: data, methods, computed
- Uses 'this' to access state and methods
- Simple for small components

Composition API:
- Organizes code by logical features inside setup()
- Uses refs/reactive for state
- Access state directly without 'this'
- Better for complex, reusable logic
Full Transcript
This visual guide compares Vue's Options API and Composition API. Options API organizes component code by options like data and methods, accessed via 'this'. Composition API uses a setup function to group related state and logic, accessed directly without 'this'. The execution table traces a simple count increment example showing state changes and rendering steps. Key moments clarify why 'this' is used in Options API but not in Composition API, and how Composition API improves code organization. The quiz tests understanding of state changes and API differences. The snapshot summarizes key syntax and usage differences for quick reference.

Practice

(1/5)
1. Which Vue API organizes component code by options like data, methods, and computed?
easy
A. Options API
B. Composition API
C. Both APIs organize code this way
D. Neither API uses options

Solution

  1. Step 1: Understand Options API structure

    The Options API groups code by options such as data, methods, and computed.
  2. Step 2: Compare with Composition API

    The Composition API organizes code inside the setup() function by logical features, not by options.
  3. Final Answer:

    Options API -> Option A
  4. Quick Check:

    Options API groups by options like data and methods [OK]
Hint: Options API groups by options, Composition API uses setup() [OK]
Common Mistakes:
  • Confusing Composition API with Options API structure
  • Thinking both APIs organize code the same way
  • Believing Options API uses setup() function
2. Which of the following is the correct way to declare a reactive state variable using the Composition API in Vue?
easy
A. const count = ref(0); inside setup()
B. data() { return { count: 0 } }
C. methods: { count() { return 0 } }
D. computed: { count: () => 0 }

Solution

  1. Step 1: Identify Composition API reactive declaration

    In Composition API, reactive state uses ref() inside setup(), e.g., const count = ref(0);.
  2. Step 2: Compare other options

    data() { return { count: 0 } } is Options API syntax, A and D are for methods and computed properties, not reactive refs.
  3. Final Answer:

    const count = ref(0); inside setup() -> Option A
  4. Quick Check:

    Use ref() in setup() for reactive state [OK]
Hint: Use ref() inside setup() for reactive state in Composition API [OK]
Common Mistakes:
  • Using data() syntax in Composition API
  • Confusing methods with reactive state
  • Trying to declare reactive state outside setup()
3. Given this Vue component using Composition API:
import { ref } from 'vue';
export default {
  setup() {
    const count = ref(0);
    function increment() {
      count.value++;
    }
    return { count, increment };
  }
}

What will be the value of count after calling increment() twice?
medium
A. 0
B. 1
C. 2
D. undefined

Solution

  1. Step 1: Understand ref and increment function

    count is a ref initialized to 0. Calling increment() increases count.value by 1 each time.
  2. Step 2: Calculate count after two increments

    Starting at 0, after two increments: 0 + 1 + 1 = 2.
  3. Final Answer:

    2 -> Option C
  4. Quick Check:

    Two increments add 2 to count.value [OK]
Hint: ref.value changes with increments; count.value++ twice = 2 [OK]
Common Mistakes:
  • Forgetting to use .value with ref
  • Assuming count is a plain number, not a ref
  • Thinking increment does not change count
4. Identify the error in this Vue component using Options API:
export default {
  data() {
    count: 0
  },
  methods: {
    increment() {
      this.count++;
    }
  }
}
medium
A. Incorrect method name increment
B. data() should be a property, not a function
C. Using this.count instead of count
D. Missing return statement in data()

Solution

  1. Step 1: Check data() function syntax

    In Options API, data() must return an object. Here, it lacks return keyword.
  2. Step 2: Verify other parts

    Method name and usage of this.count are correct. data() is correctly a function.
  3. Final Answer:

    Missing return statement in data() -> Option D
  4. Quick Check:

    data() must return an object [OK]
Hint: data() must return an object with return keyword [OK]
Common Mistakes:
  • Omitting return in data()
  • Confusing this.count with count
  • Thinking data() can be an object directly
5. You have a large Vue project with many components sharing logic like fetching data and handling loading states. Which API choice is best and why?
hard
A. Options API, because it separates code by options making it easier to read
B. Composition API, because it groups related logic together for better reuse
C. Options API, because it requires less code and is more modern
D. Composition API, because it avoids using setup() and is simpler

Solution

  1. Step 1: Consider project size and logic reuse

    Large projects with shared logic benefit from grouping related code together for reuse and clarity.
  2. Step 2: Compare API strengths

    Composition API allows grouping logic inside setup(), making reuse easier. Options API separates by options, which can scatter related logic.
  3. Final Answer:

    Composition API, because it groups related logic together for better reuse -> Option B
  4. Quick Check:

    Composition API groups logic for reuse in large projects [OK]
Hint: Use Composition API for reusable logic in big projects [OK]
Common Mistakes:
  • Choosing Options API for better reuse in large projects
  • Thinking Composition API avoids setup()
  • Believing Options API is more modern
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