javascripthtmlcsssveltesvelte-component

Toggle Classes in Svelte Component


Consider this Svelte code:

https://svelte.dev/repl/e3ea17e8e09044999bf7cb4bc882adea?version=3.19.2

How can I adjust this so that each button can be toggled independently? As you can see it currently toggles all of the buttons :(


Solution

  • You have to maintain the state for each button like so:

    <script>let active = {button1: false, button2: false, button3: false};</script>
    
    <style>.active {background-color: #ff3e00; color: white;}</style>
    
    <button class:active="{active.button1}" on:click="{() => active.button1 = !active.button1}">foo</button>
    <button class:active="{active.button2}" on:click="{() => active.button2 = !active.button2}">bar</button>
    <button class:active="{active.button3}" on:click="{() => active.button3 = !active.button3}">baz</button>