Bird
Raised Fist0
Vueframework~10 mins

Props for parent to child data in Vue - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to pass a prop named message from the parent to the child component.

Vue
<template>
  <ChildComponent [1]="'Hello!'" />
</template>
Drag options to blanks, or click blank then click option'
Av-if
Bv-model
Cv-for
Dv-bind:message
Attempts:
3 left
💡 Hint
Common Mistakes
Using v-model instead of v-bind for props.
Trying to use v-for or v-if to pass data.
2fill in blank
medium

Complete the child component code to declare a prop named title.

Vue
<script setup>
const props = defineProps({
  [1]: String
})
</script>
Drag options to blanks, or click blank then click option'
Atitle
Bmessage
Ccontent
Dtext
Attempts:
3 left
💡 Hint
Common Mistakes
Using a different prop name than the parent passes.
Not declaring props at all in the child component.
3fill in blank
hard

Fix the error in the child component to correctly display the prop subtitle inside the template.

Vue
<template>
  <h2>{{ [1] }}</h2>
</template>
Drag options to blanks, or click blank then click option'
Aprops.subtitle
Bsubtitle
Cthis.subtitle
Dthis.props.subtitle
Attempts:
3 left
💡 Hint
Common Mistakes
Using props.subtitle or this.subtitle in the template.
Trying to access props with this.props.
4fill in blank
hard

Fill both blanks to pass a prop named count with value 5 and declare it in the child component.

Vue
<template>
  <Counter [1]="5" />
</template>

<script setup>
const props = defineProps({
  [2]: Number
})
</script>
Drag options to blanks, or click blank then click option'
Av-bind:count
Bcount
Cvalue
Dnumber
Attempts:
3 left
💡 Hint
Common Mistakes
Using different prop names in parent and child.
Not declaring the prop type correctly.
5fill in blank
hard

Fill all three blanks to pass a prop userName, declare it, and display it inside the child template.

Vue
<template>
  <UserCard [1]="'Alice'" />
</template>

<script setup>
const props = defineProps({
  [2]: String
})
</script>

<template>
  <p>Hello, {{ [3] }}!</p>
</template>
Drag options to blanks, or click blank then click option'
Av-bind:userName
BuserName
Dname
Attempts:
3 left
💡 Hint
Common Mistakes
Using different names for the prop in parent, child declaration, or template.
Trying to access props with props.userName in the template.

Practice

(1/5)
1. What is the main purpose of props in Vue components?
easy
A. To pass data from a parent component to a child component
B. To store local state inside a component
C. To handle user input events
D. To define methods inside a component

Solution

  1. Step 1: Understand the role of props

    Props are designed to send data from a parent component down to its child components.
  2. Step 2: Differentiate props from other features

    Local state stores data inside a component, events handle user actions, and methods define functions. Only props pass data downward.
  3. Final Answer:

    To pass data from a parent component to a child component -> Option A
  4. Quick Check:

    Props = Parent to Child Data [OK]
Hint: Props always send data from parent to child [OK]
Common Mistakes:
  • Confusing props with local state
  • Thinking props handle events
  • Assuming props define methods
2. Which of the following is the correct way to declare a prop named title in a Vue 3 child component using <script setup>?
easy
A. const props = defineProps({ title: String })
B. props: ['title']
C. export default { props: ['title'] }
D. const title = ref('')

Solution

  1. Step 1: Identify Vue 3 <script setup> syntax

    In Vue 3 with <script setup>, props are declared using defineProps().
  2. Step 2: Match the correct syntax for prop declaration

    const props = defineProps({ title: String }) correctly declares a prop named title of type String.
  3. Final Answer:

    const props = defineProps({ title: String }) -> Option A
  4. Quick Check:

    Vue 3 <script setup> uses defineProps() [OK]
Hint: Use defineProps() inside
Common Mistakes:
  • Using options API syntax inside
  • Declaring props as local refs
  • Forgetting to use defineProps() in
3. Given the parent component template:
<ChildComponent :message="'Hello Vue'" />

And the child component script setup:
const props = defineProps({ message: String })
console.log(props.message)

What will be logged to the console?
medium
A. undefined
B. 'Hello Vue'
C. An error because props.message is read-only
D. null

Solution

  1. Step 1: Understand prop passing

    The parent passes the string 'Hello Vue' as the message prop to the child.
  2. Step 2: Accessing the prop in child

    The child uses defineProps to declare message and logs props.message, which holds 'Hello Vue'.
  3. Final Answer:

    'Hello Vue' -> Option B
  4. Quick Check:

    Passed prop value logs correctly [OK]
Hint: Props hold passed values, accessible via props object [OK]
Common Mistakes:
  • Expecting props to be undefined without declaration
  • Confusing read-only with inaccessible
  • Assuming props are null if not reactive
4. What is wrong with this child component code that tries to modify a prop?
<script setup>
const props = defineProps({ count: Number })
props.count = props.count + 1
</script>
medium
A. Props must be declared as reactive refs to modify
B. The prop type Number is invalid in defineProps
C. Missing import of defineProps
D. Props are read-only and cannot be assigned new values

Solution

  1. Step 1: Recall prop immutability

    Props in Vue are read-only inside child components and cannot be directly modified.
  2. Step 2: Identify the error in code

    The code tries to assign a new value to props.count, which violates the read-only rule and causes an error.
  3. Final Answer:

    Props are read-only and cannot be assigned new values -> Option D
  4. Quick Check:

    Props cannot be changed inside child [OK]
Hint: Never assign new values to props inside child [OK]
Common Mistakes:
  • Trying to mutate props directly
  • Confusing props with reactive state
  • Ignoring Vue warnings about prop mutation
5. You want to pass a list of user names from a parent to a child component and display them. Which approach correctly passes and uses the prop in the child component using Vue 3 <script setup>?

Parent template:
<UserList :users="['Alice', 'Bob', 'Charlie']" />

Choose the correct child component code:
hard
A.
<script setup>
export default {
  props: ['users']
}
</script>
<template>
  <ul>
    <li v-for="user in users" :key="user">{{ user }}</li>
  </ul>
</template>
B.
<script setup>
const users = ref([])
</script>
<template>
  <ul>
    <li v-for="user in users" :key="user">{{ user }}</li>
  </ul>
</template>
C.
<script setup>
const props = defineProps({ users: Array })
</script>
<template>
  <ul>
    <li v-for="user in props.users" :key="user">{{ user }}</li>
  </ul>
</template>
D.
<script setup>
const props = defineProps({ users: String })
</script>
<template>
  <ul>
    <li v-for="user in props.users" :key="user">{{ user }}</li>
  </ul>
</template>

Solution

  1. Step 1: Check prop declaration type

    The parent passes an array, so the child must declare users as type Array using defineProps({ users: Array }).
  2. Step 2: Verify template usage

    The child uses v-for to loop over props.users and display each user in a list item, which is correct.
  3. Final Answer:

    The code using defineProps({ users: Array }) and v-for on props.users -> Option C
  4. Quick Check:

    Array prop with defineProps and v-for works [OK]
Hint: Match prop type to passed data and loop in template [OK]
Common Mistakes:
  • Declaring wrong prop type (e.g., String instead of Array)
  • Not using defineProps in
  • Trying to mutate props inside child
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