Ищу элегантный способ сделать динамические свойства для объекта, с конкатинацией строк
Есть такой код:
const setup = (className: string) => {
return {
'&-primary': {
'@apply border-primary dark:border-primary-dark': {},
'@apply bg-primary dark:bg-primary-dark': {},
'@apply text-primary-content dark:text-primary-dark': {},
'&:hover, &.btn-active': {
'@apply border-primary-focus dark:border-primary-focus-dark': {},
'@apply bg-primary-focus dark:bg-primary-focus-dark': {},
},
'&:focus-visible': {
outline: '2px solid hsl(var(--p))'
}
},
}
}
Необходимо поменять в нем зашитый primary на динамический className. Обычная конкатинация строк в данном случае не подходит. JS не будет создавать свойства на лету. Есть способ с квадратными скобками, но он потребует создания множества промежуточных объектов. Я им воспользуюсь, но, вдруг, есть что-то более элегантное?
Источник: Stack Overflow на русском