Always add key in v-for for better rendering performance.
Use semantic HTML and ARIA labels for accessibility.
Generic components work best with TypeScript to catch errors early.
Summary
Generic components let you reuse one component for many data types.
Use TypeScript and defineProps to specify the data shape.
Keep accessibility and keyboard navigation in mind.
Practice
(1/5)
1. What is the main benefit of using generic components in Vue?
easy
A. They allow reusing one component for different data types.
B. They automatically style components without CSS.
C. They replace the need for Vue Router.
D. They make components load faster by default.
Solution
Step 1: Understand generic components purpose
Generic components are designed to be reusable with different data types, so you don't rewrite similar components for each type.
Step 2: Compare options to this purpose
Options B, C, and D describe unrelated features. Only They allow reusing one component for different data types. matches the core benefit of generic components.
Final Answer:
They allow reusing one component for different data types. -> Option A
Quick Check:
Generic components = reuse for many data types [OK]
Hint: Generic means reusable for many types, not styling or routing [OK]
Common Mistakes:
Confusing generic components with styling features
A. Accessing value assumes item is a ref, but it may not be.
B. Missing import of defineProps causes syntax error.
C. Generic type T must be declared before use.
D. Props must be defined as an array, not an object.
Solution
Step 1: Analyze usage of item.value
Accessing value is valid only if item is a Vue ref. The generic type T could be any type, so item might not have value.
Step 2: Check other options
Missing import of defineProps causes syntax error. is incorrect because defineProps is globally available in Vue SFCs. Generic type T must be declared before use. is incorrect because T is assumed declared in the generic context. Props must be defined as an array, not an object. is wrong because props can be defined as an object type.
Final Answer:
Accessing value assumes item is a ref, but it may not be. -> Option A
Quick Check:
Accessing .value requires ref type, generic may not be ref [OK]
Hint: Only refs have .value; generics may be plain values [OK]
Common Mistakes:
Assuming generic type is always a ref
Thinking defineProps needs import in SFC
Believing props must be array, not object
5. You want to create a generic Vue component that accepts a list of items of any type and renders each item with a slot. Which approach correctly applies generics and slots together?
hard
A. Use defineProps(['items']) and render items directly without slots.
B. Use defineProps<{ items: any[] }>() and hardcode item rendering inside component.
C. Use defineProps<{ items: T[] }>() and a default slot with v-for passing each item as slot prop.
D. Use defineProps<{ items: T }>() and render items without looping.
Solution
Step 1: Define generic props for list of items
Using defineProps<{ items: T[] }>() correctly types the prop as an array of generic type T.
Step 2: Use slots with v-for to render each item
Passing each item as a slot prop allows flexible rendering by the parent component, which is the correct pattern for generic components with slots.
Step 3: Evaluate other options
Use defineProps(['items']) and render items directly without slots. lacks generics and slots. Use defineProps<{ items: any[] }>() and hardcode item rendering inside component. uses any losing type safety and hardcodes rendering. Use defineProps<{ items: T }>() and render items without looping. uses T instead of T[] and misses looping.
Final Answer:
Use defineProps<{ items: T[] }>() and a default slot with v-for passing each item as slot prop. -> Option C
Quick Check:
Generic list + slot with v-for = Use defineProps<{ items: T[] }>() and a default slot with v-for passing each item as slot prop. [OK]
Hint: Generic list props need array type and slot with v-for [OK]
Common Mistakes:
Using single item type instead of array for list props
Not using slots for flexible item rendering
Hardcoding rendering inside generic component
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.