0
0
Svelteframework~20 mins

Use directive syntax in Svelte - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Svelte Use Directive Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What is the output of this Svelte component?
Consider this Svelte code using the use: directive. What will be the text content of the <div> after the component mounts?
Svelte
<script>
  function highlight(node) {
    node.style.backgroundColor = 'yellow';
  }
</script>

<div use:highlight>Hello</div>
AThe div text will be 'Hello' with a yellow background.
BThe div text will be 'Hello' with no background color change.
CThe div will be empty with a yellow background.
DThe component will throw a runtime error.
Attempts:
2 left
💡 Hint
The use: directive runs the function with the element as argument after mount.
📝 Syntax
intermediate
2:00remaining
Which option correctly uses the use: directive to add a tooltip?
You want to add a tooltip to a button using a use: directive. Which code snippet is correct?
A<script>function tooltip(node) { node.title = 'Click me'; }</script><button use={tooltip}>Press</button>
B<script>function tooltip(node) { node.title = 'Click me'; }</script><button use-tooltip>Press</button>
C<script>function tooltip(node) { node.title = 'Click me'; }</script><button use:tooltip>Press</button>
D<script>function tooltip(node) { node.title = 'Click me'; }</script><button use:tooltip()>Press</button>
Attempts:
2 left
💡 Hint
The correct syntax is use:action without parentheses.
🔧 Debug
advanced
2:00remaining
Why does this use: directive not update when the parameter changes?
Look at this Svelte code. The use:color directive sets the background color. Why does the background not update when color changes?
Svelte
<script>
  export let color = 'red';
  function colorAction(node) {
    node.style.backgroundColor = color;
  }
</script>

<div use:colorAction>Box</div>

<button on:click={() => color = 'blue'}>Change Color</button>
AThe button click does not update <code>color</code> because the event handler is missing parentheses.
BThe <code>color</code> variable is not reactive because it is not declared with <code>let</code>.
CThe <code>use:</code> directive syntax is incorrect and causes the update to fail.
DThe action function does not react to changes in <code>color</code> because it runs only once on mount.
Attempts:
2 left
💡 Hint
Actions run once when the element is created and do not rerun automatically on variable changes.
🧠 Conceptual
advanced
2:00remaining
What is the purpose of the return value in a use: action function?
In Svelte, a use: action function can return an object with an update and/or destroy method. What is the main purpose of these methods?
A<code>update</code> allows the action to react to parameter changes; <code>destroy</code> cleans up when the element is removed.
B<code>update</code> reruns the entire component; <code>destroy</code> resets all variables.
C<code>update</code> is called only once on mount; <code>destroy</code> is never called.
D<code>update</code> changes the component's props; <code>destroy</code> reloads the page.
Attempts:
2 left
💡 Hint
Think about how actions can respond to changes and clean up resources.
state_output
expert
3:00remaining
What is the final background color after clicking the button twice?
Analyze this Svelte component using a use: directive with parameters. What is the background color of the <div> after clicking the button twice?
Svelte
<script>
  import { writable } from 'svelte/store';
  const colors = ['red', 'green', 'blue'];
  let index = 0;
  let currentColor = colors[index];

  function colorAction(node, color) {
    node.style.backgroundColor = color;
    return {
      update(newColor) {
        node.style.backgroundColor = newColor;
      }
    };
  }

  function changeColor() {
    index = (index + 1) % colors.length;
    currentColor = colors[index];
  }
</script>

<div use:colorAction={currentColor}>Color Box</div>
<button on:click={changeColor}>Change Color</button>
AThe background color will not change from the initial color.
BThe background color will be 'blue'.
CThe background color will be 'red'.
DThe background color will be 'green'.
Attempts:
2 left
💡 Hint
Each click updates currentColor and triggers the action's update method.