0
0
Vueframework~20 mins

Options API vs Composition API decision in Vue - Practice Questions

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Vue API Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding the main difference between Options API and Composition API

Which statement best describes the key difference between Vue's Options API and Composition API?

AOptions API is only for Vue 2, and Composition API is only for Vue 3, so they cannot be used together.
BOptions API organizes code by options like data, methods, and computed, while Composition API organizes code by logical features using functions.
COptions API requires class components, while Composition API only supports functional components.
DOptions API uses reactive refs by default, while Composition API does not support reactivity.
Attempts:
2 left
💡 Hint

Think about how code is grouped and reused in each API style.

component_behavior
intermediate
2:00remaining
Behavior difference in reactive state declaration

Consider these two Vue components. What is the main difference in how their reactive state is declared and accessed?

Component A (Options API):
export default {
  data() {
    return { count: 0 };
  },
  methods: {
    increment() {
      this.count++;
    }
  }
}

Component B (Composition API):
import { ref } from 'vue';
export default {
  setup() {
    const count = ref(0);
    function increment() {
      count.value++;
    }
    return { count, increment };
  }
}
AComponent A uses a plain property accessed with 'this.count', Component B uses a ref accessed with 'count.value'.
BComponent A uses refs accessed with 'count.value', Component B uses plain properties accessed with 'this.count'.
CBoth components use refs but Component A returns them from data(), Component B returns them from setup().
DComponent A cannot update count reactively, Component B updates count reactively.
Attempts:
2 left
💡 Hint

Think about how reactive variables are accessed differently in Options API vs Composition API.

📝 Syntax
advanced
2:00remaining
Identify the correct Composition API setup function syntax

Which option shows the correct syntax for a Vue 3 Composition API setup function that returns a reactive variable and a method?

A
setup() {
  const message = ref('Hello');
  function update() {
    message.value = 'Hi';
  }
  return { message, update };
}
B
setup() {
  let message = 'Hello';
  function update() {
    message = 'Hi';
  }
  return { message, update };
}
C
setup() {
  const message = reactive('Hello');
  function update() {
    message = 'Hi';
  }
  return { message, update };
}
D
setup() {
  const message = ref('Hello');
  function update() {
    message = 'Hi';
  }
  return { message, update };
}
Attempts:
2 left
💡 Hint

Remember how to update a ref's value inside a function.

🔧 Debug
advanced
2:00remaining
Debugging reactivity loss in Options API vs Composition API

Why does this Composition API code fail to update the displayed count, while the Options API version works?

Composition API snippet:
setup() {
  let count = 0;
  function increment() {
    count++;
  }
  return { count, increment };
}
ABecause <code>count</code> should be declared inside <code>data()</code> instead of <code>setup()</code>.
BBecause <code>increment</code> is not declared as an arrow function, so it loses context.
CBecause <code>count</code> is a plain variable, not a ref, so Vue cannot track changes to it.
DBecause the <code>return</code> statement is missing parentheses around the object.
Attempts:
2 left
💡 Hint

Think about what makes a variable reactive in Composition API.

state_output
expert
2:00remaining
Predict the rendered output after state changes in mixed API usage

Given this Vue 3 component mixing Options API and Composition API, what will be the final rendered count after calling incrementBoth() once?

export default {
  data() {
    return { countOptions: 0 };
  },
  setup() {
    const countComposition = ref(0);
    function incrementBoth() {
      this.countOptions++;
      countComposition.value++;
    }
    return { countComposition, incrementBoth };
  }
}

Template displays: {{ countOptions }} - {{ countComposition }}

A0 - 0
B1 - 1
C1 - 0
D0 - 1
Attempts:
2 left
💡 Hint

Consider the context of this inside incrementBoth in Composition API.