Bird
Raised Fist0
Svelteframework~10 mins

svelte:component for dynamic components - Interactive Code Practice

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

Complete the code to render a dynamic component using svelte:component.

Svelte
<script>
  import Button from './Button.svelte';
  let current = [1];
</script>

<svelte:component this={current} />
Drag options to blanks, or click blank then click option'
Abutton
BButton
CComponent
Dcurrent
Attempts:
3 left
💡 Hint
Common Mistakes
Using a string like 'Button' instead of the imported component variable.
Using lowercase 'button' which is an HTML tag, not a Svelte component.
2fill in blank
medium

Complete the code to switch the dynamic component based on a condition.

Svelte
<script>
  import A from './A.svelte';
  import B from './B.svelte';
  let useA = true;
  let current = useA ? [1] : B;
</script>

<svelte:component this={current} />
Drag options to blanks, or click blank then click option'
AA
BB
CuseA
Dcurrent
Attempts:
3 left
💡 Hint
Common Mistakes
Using a string 'A' instead of the imported component variable.
Using the variable useA instead of the component.
3fill in blank
hard

Fix the error in the code to correctly pass props to the dynamic component.

Svelte
<script>
  import Card from './Card.svelte';
  let current = Card;
  let title = 'Hello';
</script>

<svelte:component this={current} [1] />
Drag options to blanks, or click blank then click option'
Atitle
Btitle:title
Ctitle={title}
Dtitle=>title
Attempts:
3 left
💡 Hint
Common Mistakes
Passing props without curly braces, which treats them as strings.
Using incorrect syntax like title:title.
4fill in blank
hard

Fill both blanks to render a dynamic component with a fallback if the component is null.

Svelte
<script>
  import X from './X.svelte';
  let current = [1];
</script>

{#if current}
  <svelte:component this={current} />
[2]
{/if}
Drag options to blanks, or click blank then click option'
AX
B<p>No component selected</p>
C<p>Loading...</p>
Dnull
Attempts:
3 left
💡 Hint
Common Mistakes
Assigning null to current without fallback.
Using fallback text outside the {#if} block.
5fill in blank
hard

Fill all three blanks to create a dynamic component that updates on button click.

Svelte
<script>
  import One from './One.svelte';
  import Two from './Two.svelte';
  let current = [1];
  function toggle() {
    current = current === One ? [2] : One;
  }
</script>

<button on:click=[3]>Toggle</button>
<svelte:component this={current} />
Drag options to blanks, or click blank then click option'
AOne
BTwo
Ctoggle
Dtoggle()
Attempts:
3 left
💡 Hint
Common Mistakes
Calling the function immediately with toggle() instead of passing the function reference.
Using strings instead of component variables.

Practice

(1/5)
1. What does the svelte:component tag do in Svelte?
easy
A. It imports components from external libraries.
B. It creates a new Svelte component file.
C. It renders a component dynamically based on a variable.
D. It styles components with CSS.

Solution

  1. Step 1: Understand the purpose of svelte:component

    This tag is used to render different components dynamically depending on a variable's value.
  2. Step 2: Compare with other options

    Creating files, styling, or importing are unrelated to svelte:component.
  3. Final Answer:

    It renders a component dynamically based on a variable. -> Option C
  4. Quick Check:

    svelte:component = dynamic rendering [OK]
Hint: Remember: svelte:component means dynamic component rendering [OK]
Common Mistakes:
  • Thinking it creates new component files
  • Confusing it with CSS styling
  • Assuming it imports components
2. Which of the following is the correct syntax to render a dynamic component stored in variable CurrentComp?
easy
A. <component this={CurrentComp} />
B. <svelte:component this={CurrentComp} />
C. <svelte:component src={CurrentComp} />
D. <Component this={CurrentComp} />

Solution

  1. Step 1: Recall correct tag and attribute

    The correct tag is svelte:component and the attribute to specify the component is this.
  2. Step 2: Check each option

    <svelte:component this={CurrentComp} /> uses correct tag and attribute syntax. Others use wrong tags or attributes.
  3. Final Answer:

    <svelte:component this={CurrentComp} /> -> Option B
  4. Quick Check:

    Correct tag and this attribute = <svelte:component this={CurrentComp} /> [OK]
Hint: Use svelte:component this={variable} for dynamic components [OK]
Common Mistakes:
  • Using component instead of svelte:component
  • Using src instead of this
  • Capitalizing tags incorrectly
3. Given the code:
  <script>
    import A from './A.svelte';
    import B from './B.svelte';
    let comp = A;
  </script>

  <svelte:component this={comp} />

  <button on:click={() => comp = B}>Switch</button>

What happens when the button is clicked?
medium
A. The displayed component switches from A to B.
B. Nothing changes because comp is not reactive.
C. An error occurs because components cannot be switched dynamically.
D. Both components A and B render at the same time.

Solution

  1. Step 1: Understand the initial rendering

    The variable comp starts as component A, so A renders initially.
  2. Step 2: Analyze the button click

    Clicking the button sets comp to B, which triggers Svelte to render component B dynamically.
  3. Final Answer:

    The displayed component switches from A to B. -> Option A
  4. Quick Check:

    Dynamic this changes component = The displayed component switches from A to B. [OK]
Hint: Changing this variable updates the rendered component [OK]
Common Mistakes:
  • Thinking dynamic components can't switch
  • Assuming comp is not reactive
  • Expecting both components to render simultaneously
4. What is wrong with this code snippet?
<script>
  import X from './X.svelte';
  let comp = 'X';
</script>

<svelte:component this={comp} />
medium
A. You cannot use variables inside this.
B. The import statement is incorrect.
C. The svelte:component tag must be self-closing.
D. The variable comp should hold the component, not a string.

Solution

  1. Step 1: Check the type of comp

    The variable comp is assigned the string 'X', but it should hold the imported component itself.
  2. Step 2: Understand this attribute requirements

    this expects a component reference, not a string name.
  3. Final Answer:

    The variable comp should hold the component, not a string. -> Option D
  4. Quick Check:

    this needs component, not string [OK]
Hint: Assign component imports, not strings, to this [OK]
Common Mistakes:
  • Assigning component name as string
  • Thinking svelte:component can't be self-closing
  • Believing variables can't be used in this
5. You want to render a dynamic component with props. Given components Cat and Dog both accept a name prop, how do you pass name="Buddy" to the dynamic component stored in petComp?
hard
A. <svelte:component this={petComp} name="Buddy" />
B. <svelte:component this={petComp} {name}="Buddy" />
C. <svelte:component this={petComp} props={{name: 'Buddy'}} />
D. <svelte:component this={petComp} bind:name="Buddy" />

Solution

  1. Step 1: Recall how to pass props to components

    Props are passed as attributes directly on the component tag, including svelte:component.
  2. Step 2: Check each option's syntax

    <svelte:component this={petComp} name="Buddy" /> correctly passes name="Buddy". <svelte:component this={petComp} {name}="Buddy" /> uses invalid syntax. <svelte:component this={petComp} props={{name: 'Buddy'}} /> tries to pass props as an object, which is not supported. <svelte:component this={petComp} bind:name="Buddy" /> uses bind: incorrectly.
  3. Final Answer:

    <svelte:component this={petComp} name="Buddy" /> -> Option A
  4. Quick Check:

    Pass props as attributes on svelte:component [OK]
Hint: Pass props like normal attributes on svelte:component [OK]
Common Mistakes:
  • Trying to pass props as an object
  • Using bind: incorrectly
  • Using curly braces around prop name with value
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