Bird
Raised Fist0
Astroframework~10 mins

Svelte components in Astro - Interactive Code Practice

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

Complete the code to import a Svelte component into an Astro file.

Astro
---
import MyComponent from './MyComponent.svelte';
---

<MyComponent [1] />
Drag options to blanks, or click blank then click option'
Aclient:only
Bclient:load
Cclient:idle
Dbind:value
Attempts:
3 left
💡 Hint
Common Mistakes
Using client:load instead of client:only.
Forgetting to import the Svelte component first.
2fill in blank
medium

Complete the code to pass a prop named 'title' with value 'Hello' to a Svelte component in Astro.

Astro
---
import Header from './Header.svelte';
---

<Header [1]="Hello" />
Drag options to blanks, or click blank then click option'
Aprop:title
Bbind:title
Ctitle
Dvalue
Attempts:
3 left
💡 Hint
Common Mistakes
Using bind:title which is for two-way binding.
Using prop:title which is not valid syntax.
3fill in blank
hard

Fix the error in the Astro code to correctly load a Svelte component only when the page is idle.

Astro
---
import Footer from './Footer.svelte';
---

<Footer [1] />
Drag options to blanks, or click blank then click option'
Aclient:visible
Bclient:load
Cclient:only
Dclient:idle
Attempts:
3 left
💡 Hint
Common Mistakes
Using client:load which loads immediately.
Using client:only which loads on client but not delayed.
4fill in blank
hard

Fill both blanks to import and use a Svelte component named 'Button' with client-side only rendering.

Astro
---
import [1] from './Button.svelte';
---

<[2] client:only />
Drag options to blanks, or click blank then click option'
AButton
Bbutton
CBtn
DbuttonComponent
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase or different names in the tag than the import.
Forgetting to add client:only directive.
5fill in blank
hard

Fill all three blanks to pass a 'label' prop with value 'Click me' and load the Svelte component 'Clickable' only on client load.

Astro
---
import [1] from './Clickable.svelte';
---

<[2] [3]="Click me" client:load />
Drag options to blanks, or click blank then click option'
AClickable
Blabel
Dclickable
Attempts:
3 left
💡 Hint
Common Mistakes
Using different names for import and tag.
Passing props with wrong attribute names.

Practice

(1/5)
1. What is the main reason to use Svelte components inside an Astro project?
easy
A. To replace Astro's static rendering completely
B. To write server-side code only
C. To style the website using CSS only
D. To add interactivity and dynamic behavior to the website

Solution

  1. Step 1: Understand Astro's role

    Astro mainly builds static sites but allows adding interactivity with components.
  2. Step 2: Role of Svelte components

    Svelte components add interactive features like buttons, forms, or animations inside Astro.
  3. Final Answer:

    To add interactivity and dynamic behavior to the website -> Option D
  4. Quick Check:

    Interactivity = Svelte components in Astro [OK]
Hint: Svelte in Astro = add interactivity, not just static content [OK]
Common Mistakes:
  • Thinking Svelte replaces Astro's static rendering
  • Confusing Svelte with styling tools
  • Assuming Svelte is only for server code
2. Which is the correct way to import a Svelte component named Button.svelte in an Astro file?
easy
A. import Button from './Button.svelte';
B. import Button from './Button.js';
C. import { Button } from './Button.svelte';
D. require('./Button.svelte');

Solution

  1. Step 1: Identify correct import syntax in Astro

    Astro uses ES module syntax with import Component from './Component.svelte'.
  2. Step 2: Check file extension and import style

    The component file ends with .svelte and is imported as default export.
  3. Final Answer:

    import Button from './Button.svelte'; -> Option A
  4. Quick Check:

    Default import + .svelte file = import Button from './Button.svelte'; [OK]
Hint: Use default import with .svelte extension for Svelte components [OK]
Common Mistakes:
  • Using .js extension instead of .svelte
  • Using named import instead of default
  • Using CommonJS require() instead of import
3. Given this Astro code snippet, what will be rendered on the page?
---
import Counter from './Counter.svelte';
---


Assuming Counter.svelte shows the starting number inside a <p> tag.
medium
A.

0

B.

5

C. Error: start prop not recognized
D.

undefined

Solution

  1. Step 1: Understand prop passing in Astro to Svelte

    Props like start={5} are passed to Svelte components as expected.
  2. Step 2: Check component behavior

    The Counter component displays the start prop inside a paragraph, so it shows 5.
  3. Final Answer:

    <p>5</p> -> Option B
  4. Quick Check:

    Prop passed correctly = 5 shown [OK]
Hint: Props passed as attributes render inside component [OK]
Common Mistakes:
  • Assuming default 0 without checking prop
  • Thinking prop names must be strings
  • Expecting error without reason
4. What is wrong with this Astro code importing a Svelte component?
---
import MyButton from './MyButton.svelte'
---

medium
A. Missing semicolon after import statement
B. Svelte components cannot be used as tags in Astro
C. No error, code is correct
D. No closing tag for <MyButton>

Solution

  1. Step 1: Check import syntax

    Import statement is valid without semicolon; semicolons are optional in JavaScript/TypeScript.
  2. Step 2: Check component usage

    Svelte components can be used as tags in Astro with self-closing or paired tags; here paired tags are correct.
  3. Final Answer:

    No error, code is correct -> Option C
  4. Quick Check:

    Valid import and usage = No error, code is correct [OK]
Hint: Semicolons optional; Svelte components used as tags in Astro [OK]
Common Mistakes:
  • Thinking semicolon is mandatory
  • Believing Svelte components can't be used as tags
  • Confusing self-closing with paired tags
5. You want to add a Svelte component Toggle.svelte inside an Astro page that changes text on click. Which steps are needed to make it interactive inside Astro?
hard
A. Import the component, add client:load directive on the tag for hydration
B. Import the component, use it as a tag, and Astro handles hydration automatically
C. Write the component code inside Astro file without import
D. Use only Astro components; Svelte cannot be interactive in Astro

Solution

  1. Step 1: Import and use Svelte component in Astro

    Import Toggle.svelte and use it as a tag in Astro frontmatter and template.
  2. Step 2: Enable hydration for interactivity

    Add client:load or similar directive to tell Astro to hydrate the component on the client for interactivity.
  3. Final Answer:

    Import the component, add client:load directive on the tag for hydration -> Option A
  4. Quick Check:

    Hydration directive needed for interactivity [OK]
Hint: Add client:load to hydrate interactive Svelte components [OK]
Common Mistakes:
  • Assuming Astro auto-hydrates all components
  • Not adding hydration directive
  • Trying to write Svelte code inside Astro without import
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