Когда извлекать компонент, а когда использовать только классы, зависит от ваших потребностей.
Ваш "btn" является прекрасным примером того, почему @apply и извлечение компонентов могут быть полезны. Если ваша кнопка имеет для отл. 10 попутных ветров и повторение их каждый раз в макете - плохая практика. Когда вы распакуете его в .btn, его будет легко использовать.
Но вы спросили, какой смысл делать это вместо стандартного CSS / S CSS. Это вещь со всеми фреймворками. Зачем вам включать фреймворк и при этом использовать простой код, если фреймворк может сделать его короче и чище?
Вместо:
.btn {
color: #fff;
font-weight: 700;
font-size: 1.125rem;
border-radius: .25rem;
padding-left: 1rem;
padding-right: 1rem;
padding-top: .5rem;
padding-bottom: .5rem;
&.btn-blue {
background: #2b6cb0;
}
}
У вас есть только:
.btn {
@apply text-white text-lg font-bold py-2 px-4 rounded;
&.btn-blue {
@apply bg-blue-500;
}
}
Или, если у вас есть синяя кнопка в одном месте, сделайте ее простой и:
.btn {
@apply text-white text-lg font-bold py-2 px-4 rounded;
}
И в кнопке:
<button class="btn bg-blue-500">
Tailwind не предназначен для использования только с классом inline = "ххх гггзззз". Если вы просто придерживаетесь этого, код в конечном итоге станет действительно грязным. Вот почему есть возможность использовать @apply или в некоторых случаях theme ().