Переключить классы в Svelte Component


person Timmy Lee    schedule 08.03.2020    source источник
comment
Похоже, вы изменили код в REPL после того, как спросили? Было бы неплохо, если бы посетители из будущего разместили соответствующий код в вопросе. SO любит, чтобы его потоки были автономными и не зависели от содержимого внешних ссылок, которые могут изменяться;)   -  person rixo    schedule 09.03.2020
comment
да .. без проблем .. я верну его и начну новый ответ на то, над чем я работаю: D   -  person Timmy Lee    schedule 09.03.2020


Ответы (2)


Вы должны поддерживать состояние каждой кнопки следующим образом:

<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>
person Anurag Srivastava    schedule 08.03.2020
comment
Что ж, это довольно неизбежно, учитывая, что вам нужно отслеживать состояния 3 кнопок. :) Примите, если ответ помог. - person Anurag Srivastava; 09.03.2020
comment
Мне только что сказали на стройном Discord, что вы можете сделать это с помощью компонента кнопки, а затем не делать вышеупомянутого. позвольте мне сначала проверить это, прежде чем принимать ответ - person Timmy Lee; 09.03.2020
comment
Хотя создание компонента Button, вероятно, является хорошим советом (или, может быть, излишним, если нужно просто добавить класс?), Я думаю, что это действительно отвечает на первоначальный вопрос. - person rixo; 09.03.2020

Поэтому для тех, кто хочет получить более подробный ответ на вышеизложенное, я создал изящный компонент кнопки, который позволяет переключать и открывать ссылки в этом REPL.

https://svelte.dev/repl/c5b48ef759d045d08d173.19eversion/ >

Наслаждаться!

person Timmy Lee    schedule 09.03.2020