Селектор элемента React JSS (текущий) — `& element`

Есть ли рабочий эквивалент для текущего селектора элементов в синтаксисе стиля React JSS?

'&element': { margin: 0 }

Случай использования

У меня есть этот стиль для всех компонентов <Button> в моем приложении.

'&:first-of-type': { marginLeft: 0 },
'&:last-of-type': { marginRight: 0 }

Поэтому, если они появляются подряд, у первого и последнего есть соответствующие поля.

Однако иногда я использую

<Button component={Link} ../>

Что превращает компонент Button в элемент a вместо button. Это может испортить селекторы :first-of-type / :last-of-type и отменить поля для элемента a между кнопками.

Мое первоначальное намерение состояло в том, чтобы установить что-то подобное, но это не работает.

'&button:first-of-type': { marginLeft: 0 },
'&button:last-of-type': { marginRight: 0 }

Пока пользуюсь альтернативой

'&:first-of-type:not(a)': { marginLeft: 0 },
'&:last-of-type:not(a)': { marginRight: 0 }

person optimista    schedule 30.03.2021    source источник
comment
В соответствии с ответом @Oleg Isonen ниже, дайте родительский элемент padding-left и padding-right вместо того, чтобы пытаться дать все остальное margin или используйте селектор для дочерних элементов родительского элемента   -  person Ayushya    schedule 30.03.2021


Ответы (1)


Элемент кнопки не должен отвечать за поля, потому что он нарушает инкапсуляцию, ваш компонент не должен заботиться о внешнем пространстве, это должен делать его родитель.

person Oleg Isonen    schedule 30.03.2021
comment
просто хотел узнать больше об этом и контексте, стоящем за этим. Является ли это обычной практикой для хорошего UX? Где я могу прочитать больше, что я должен искать? - person Ayushya; 30.03.2021