Bird
Raised Fist0
Svelteframework~5 mins

Reactive statements ($:) in Svelte - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the $: symbol mean in Svelte?
It marks a reactive statement that runs automatically whenever its dependencies change.
Click to reveal answer
beginner
How do reactive statements help in Svelte components?
They update values or run code automatically when related data changes, keeping the UI in sync without manual updates.
Click to reveal answer
beginner
Given <code>let count = 0;</code> and <code>$: doubled = count * 2;</code>, what happens when <code>count</code> changes?
The variable doubled updates automatically to twice the new count value.
Click to reveal answer
intermediate
Can you use multiple reactive statements in one Svelte component?
Yes, you can have many $: statements, each reacting to different variables or expressions.
Click to reveal answer
intermediate
What happens if a reactive statement has no dependencies?
It runs once when the component initializes and never again, because nothing triggers it to rerun.
Click to reveal answer
What triggers a reactive statement marked with $: to run in Svelte?
AWhen any variable it uses changes
BOnly when the component mounts
CWhen the user clicks a button
DWhen the page reloads
Which of these is a correct reactive statement syntax in Svelte?
Alet $: total = price * quantity;
Bfunction $: total() { return price * quantity; }
Cconst $: total = price * quantity;
D$: total = price * quantity;
If you write $: console.log(count);, when will the message print?
AEvery time <code>count</code> changes
BOnly once when the component loads
CNever, because console.log is not reactive
DOnly when a button is clicked
Can reactive statements update other reactive statements in Svelte?
ANo, they run independently
BYes, reactive statements can chain updates
COnly if inside a function
DOnly if declared in the same line
What happens if you write $: alert('Hello'); with no variables?
AAlert never shows
BAlert shows repeatedly causing a loop
CAlert shows once when component loads
DSyntax error
Explain how reactive statements ($:) work in Svelte and why they are useful.
Think about how Svelte updates values without you writing extra code.
You got /4 concepts.
    Describe a simple example using a reactive statement to double a number when it changes.
    Imagine you have a number and want another number always twice it.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the $: symbol do in a Svelte component?
      easy
      A. It imports a module asynchronously.
      B. It marks a statement as reactive, so it runs when its dependencies change.
      C. It declares a variable as a prop to the component.
      D. It defines a CSS style block scoped to the component.

      Solution

      1. Step 1: Understand the role of $: in Svelte

        The $: prefix is used to mark statements as reactive, meaning they automatically re-run when any variable they use changes.
      2. Step 2: Compare with other options

        Options A, B, and D describe unrelated Svelte features: async imports, props, and scoped styles, which do not use $:.
      3. Final Answer:

        It marks a statement as reactive, so it runs when its dependencies change. -> Option B
      4. Quick Check:

        Reactive statement = runs on data change [OK]
      Hint: Remember $: means 'run this when data changes' [OK]
      Common Mistakes:
      • Confusing $: with props declaration
      • Thinking $: imports modules
      • Assuming $: styles CSS
      2. Which of the following is the correct syntax to create a reactive statement in Svelte?
      easy
      A. let $: total = a + b;
      B. const $total = a + b;
      C. reactive total = a + b;
      D. $: total = a + b;

      Solution

      1. Step 1: Identify correct reactive statement syntax

        In Svelte, reactive statements start with $: followed by an assignment or expression, e.g. $: total = a + b;.
      2. Step 2: Eliminate incorrect options

        let $: total = a + b; incorrectly places $: after let. reactive total = a + b; uses a non-existent keyword reactive. const $total = a + b; uses $ in variable name incorrectly.
      3. Final Answer:

        $: total = a + b; -> Option D
      4. Quick Check:

        Reactive statement syntax = $: expression [OK]
      Hint: Start reactive lines with $: and no let/const [OK]
      Common Mistakes:
      • Using let or const with $: reactive statements
      • Writing $: inside variable names
      • Using non-existent keywords like reactive
      3. Consider this Svelte code:
      let a = 2;
      let b = 3;
      $: sum = a + b;
      
      // Later in code
      b = 5;

      What is the value of sum after b changes?
      medium
      A. 7
      B. 5
      C. 8
      D. 3

      Solution

      1. Step 1: Understand reactive statement behavior

        The reactive statement $: sum = a + b; runs whenever a or b changes. Initially, a=2 and b=3, so sum=5.
      2. Step 2: Update after changing b

        When b changes to 5, the reactive statement re-runs, updating sum = 2 + 5 = 7. But note the options carefully: 8 is 8, which is 2 + 6, not correct. 7 is 7, which matches calculation.
      3. Final Answer:

        7 -> Option A
      4. Quick Check:

        sum updates automatically = 7 [OK]
      Hint: Reactive sums update immediately when inputs change [OK]
      Common Mistakes:
      • Not updating sum after b changes
      • Adding wrong numbers
      • Confusing initial and updated values
      4. Identify the error in this Svelte reactive statement:
      let count = 0;
      $: count = count + 1;
      medium
      A. Reactive statements cannot use let variables.
      B. Syntax error: missing semicolon after count declaration.
      C. This causes an infinite loop because count updates itself reactively.
      D. No error; this code increments count once.

      Solution

      1. Step 1: Analyze reactive statement effect

        The statement $: count = count + 1; runs whenever count changes. But it changes count itself, causing it to run again immediately, creating an infinite loop.
      2. Step 2: Check other options

        Syntax error: missing semicolon after count declaration. is incorrect because semicolons are optional in JS. Reactive statements cannot use let variables. is false; reactive statements can use let variables. No error; this code increments count once. is wrong because the increment repeats endlessly.
      3. Final Answer:

        This causes an infinite loop because count updates itself reactively. -> Option C
      4. Quick Check:

        Reactive self-update causes infinite loop [OK]
      Hint: Avoid reactive statements that update their own dependencies [OK]
      Common Mistakes:
      • Ignoring infinite loops from self-updating reactive statements
      • Thinking semicolons cause errors
      • Believing reactive statements can't use let variables
      5. You want to create a reactive statement that updates discountedPrice only when price or discount change, but discount can sometimes be zero or null. Which reactive statement correctly handles this so discountedPrice is price when discount is falsy?
      hard
      A. $: discountedPrice = discount ? price - (price * discount) : price;
      B. $: discountedPrice = price - (price * discount);
      C. $: discountedPrice = price - (price * (discount || 1));
      D. $: discountedPrice = price * discount || price;

      Solution

      1. Step 1: Understand the problem with falsy discount

        If discount is zero or null, we want discountedPrice to equal price (no discount). A simple calculation without check will give wrong results.
      2. Step 2: Evaluate each option

        $: discountedPrice = price - (price * discount); always subtracts price * discount, so zero discount works but null may cause NaN. $: discountedPrice = discount ? price - (price * discount) : price; uses a conditional to check if discount is truthy, else returns price, correctly handling zero and null. $: discountedPrice = price - (price * (discount || 1)); uses discount || 1, which makes discount 1 if falsy, causing full price discount (wrong). $: discountedPrice = price * discount || price; multiplies price by discount or price, which gives wrong results when discount is zero.
      3. Final Answer:

        $: discountedPrice = discount ? price - (price * discount) : price; -> Option A
      4. Quick Check:

        Use conditional to handle falsy discount [OK]
      Hint: Use conditional ?: to handle zero or null discount safely [OK]
      Common Mistakes:
      • Ignoring falsy discount causing wrong calculations
      • Using || 1 which changes discount incorrectly
      • Assuming zero discount subtracts correctly without check
      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